我对此束手无策。我需要创建一个数组,然后使用一个单独的方法来调整它的大小,然后使用另一种方法打印它。这是我迄今为止的代码:
import java.util.Scanner;
public class Lab07 {
public static void main(String[] args)
{
//Variables
int userSize;
int newSize;
int diff;
//Scanner
@SuppressWarnings("resource")
Scanner kb = new Scanner(System.in);
do{
System.out.println("Input an array size: ");
userSize = kb.nextInt();
}while(!(userSize>0));
double[] userNums = new double[userSize];
System.out.println("Now please enter "+userSize+" numbers.");
//Gathering Input
for(int i= 0; i < userNums.length; i++)
{
System.out.println("Input a number into your array: ");
userNums[i] = kb.nextDouble();
}
//Print Array
System.out.println("Here are all the numbers in your array:");
printArray(userNums);
//New Size
System.out.println();
do{
System.out.println("Input a new size: ");
newSize = kb.nextInt();
}while(!(newSize>userSize));
diff = newSize-userSize;
System.out.println("You need to add "+diff+" new values.");
//Resize
arrayResize(userNums, newSize);
//New input
for(int i= userNums.length; i <= newSize; i++)
{
System.out.println("Input a number into your array: ");
newArray[i] = kb.nextDouble();
}
printArray(newArray);
}
public static void printArray(double[] arr)
{
System.out.print("[");
for(int j=0; j<arr.length; j++){
if(!(j==(arr.length-1)))
{
System.out.print(+arr[j]+", ");
}
else{
System.out.print(+arr[j]);
}
}
System.out.print("]");
}
public static double[] arrayResize(double[] oldArray, int newSize)
{
double[] newArray = new double[newSize];
for(int i=0; i<newArray.length; i++)
{
if(i<oldArray.length)
{
newArray[i] = oldArray[i];
}
else
{
newArray[i] = 0.0;
}
}
return newArray;
我需要我的结果看起来像这样:
Input an array size: 5
Now please enter 5 numbers
Input a number into your array: 10.0
Input a number into your array: 6.5
Input a number into your array: 4.4
Input a number into your array: 0.0
Input a number into your array: 15.0
Here are all the numbers in your array:
[10.0, 6.5, 4.4, 0.0, 15.0]
Input a new size: 7
You need to add 2 values
Input a number to add to your array: 42.42
Input a number to add to your array: 84.99
Here are all the numbers in your new array:
[10.0, 6.5, 4.4, 0.0, 15.0, 42.42, 84.99]
我的问题是何时调用arrayResize。我不知道如何将新值放入数组,也不知道如何在printArray中使用它。我也不能将任何代码从一个方法移动到另一个方法。
您需要分配arrayResize(userNums, newSize);
的结果。您返回了一个值,但没有对其执行任何操作,因此userNums
与调用resize方法之前保持不变。试试这个:
userNums = arrayResize(userNums, newSize);
如果您需要用调整大小的数组替换当前的userNums
,只需执行:
userNums = arrayResize(userNums, newSize);
在arrayResize()
方法中,不需要用0.0
填充newArray
的其余部分,因为这已经是创建double[]
数组时的默认值。此外,您只需要循环到oldArray.length
,因为在那之后就没有更多的元素可以添加到newArray
。
public static double[] arrayResize(double[] oldArray, int newSize) {
double[] newArray = new double[newSize];
for(int i = 0; i < oldArray.length; i++) {
newArray[i] = oldArray[i];
}
return newArray;
}
使用System.arraycopy()
:可以很容易地实现此方法
static double[] arrayResize(double[] oldArray, int newSize) {
double[] newArray = new double[newSize];
System.arraycopy(oldArray, 0, newArray, 0, oldArray.length);
return newArray;
}
示例:
double[] old = {1.5, 2.5, 3.5};
double[] resized = arrayResize(old, 6);
printArray(resized);
输出:
[1.5, 2.5, 3.5, 0.0, 0.0, 0.0]