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

好的,即使使用 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 设置它。其次,您的方法是这样进行的:

  • 创建一个双倍大小的数组;
  • 遍历主数组,并在每一步中比较 strArray 中的 String 和 newArray 中的 String;
  • 一旦位置 x 上的字符串相等,则返回 true;
  • 如果都不相等,则返回 false;

注意:它总是返回 false,因为 newArray 是空的。

一些关于 ArrayLists 的阅读:

不幸的是,我所知道的关于 Java 的最好的书都是用捷克语写的,所以除非你说那种语言,否则我无法提供任何建议......

于 2013-02-03T23:01:23.220 回答