0

配列のサイズを変更し、拡大の場合は true、縮小の場合は false を返すブール値メソッドを作成しようとしています! これが私がこれまでに行ったことです。残りは何をすべきかわからないので、助けてください:)

public class StringArray implements InterfaceStringArray{

String[] strArray; // create an array & store value
private int nElems =0;  // number of elements
final int ARRAY_MAX = 100;



    StringArray bubbleSort= new StringArray();     // create bubbleSort object
    StringArray selectSort = new StringArray();    // create selectSort object
    StringArray insertSort = new StringArray();   // create insertSort object


public void initialize (int arrSize) { //initializes an array of size=arrSize
    strArray = new String [arrSize]; 
}


public int getSize() { //returns the current array size
    return strArray.length;
}




public boolean resize(int newSize) { //returns true if successful (widening), false if narrowing
    String[] newArray = new String[ strArray.length * 2];

    for ( int x=0; x < strArray.length; x++){ // Load array
        if (newArray[x].equals(strArray[x]) )
        return true;
    }
    return false;
}
4

1 に答える 1

2

OK、ArrayList <String>を使用する方がタスクに適していますが、現在の実装に固執して、resize()メソッドを書き直してみます。

/*
 *  A method to resize the array.
 *  @param  : newSize - new required size of array
 *  @return : true if widening, false if narrowing
 *
 */
public boolean resize(int newSize) { 

    boolean toReturn = true;

    // if narrowing or the size isn't being changed, return value changes to false; 
    if ( newSize <= strArray.length ){
         toReturn = false;
    }

    String[] newArray = new String[newSize];

    // yes, Java allows creating zero-sized arrays

    if(newSize != 0){

       // copying from old array to new one; it doesn't matter if this is narrowing 
       // or widening, everything that fits in will be copied
       System.arraycopy(strArray,0,newArray,0,newSize);

       // copying pointer to newArray to the variable where strArray used to be
       strArray = newArray;

    }
    return(toReturn);

}

現在の実装が行うことは、目標とはまったく異なります。まず、パラメータnewSizeで設定する代わりに、配列サイズを2倍にします。次に、メソッドは次のように進行します。

  • ダブルサイズの配列を作成します。
  • メイン配列を反復処理し、各ステップでstrArrayのStringとnewArrayのStringを比較します。
  • 位置xの文字列が等しくなるとすぐに、trueを返します。
  • 等しいものがない場合は、falseを返します。

注:newArrayは空であるため、常にfalseが返されます。

ArrayListsに関するいくつかの読み物:

残念ながら、私が知っているJavaに関する最高の本はチェコ語で書かれているので、あなたがその言語を話さない限り、私は何もアドバイスできません...

于 2013-02-03T23:01:23.220 に答える