我正在尝试创建一个布尔方法来调整我的数组大小,如果加宽则返回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;
}
答案 0 :(得分:2)
好的,即使使用ArrayList&lt;字符串&gt;对你的任务会更好,我只是试着坚持你当前的实现并重新编写 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进行设置。其次,你的方法是这样的:
注意:它总是返回false,因为newArray是空的。
关于ArrayLists的一些阅读:
不幸的是,我所知道的关于Java的最好的书是用捷克语写的,所以除非你说那种语言,否则我不能提出任何建议......