退出方法时丢失数据



我在自学编程,并在前进的过程中练习我的技能。我一直在遇到一个错误,并通过反复尝试来修复它,但到目前为止,我还没有真正了解到我的实际错误,无论是语法还是逻辑,以及如何避免将来遇到它。

我的问题如下:我构建了一个使用特定数据或输入特定数据的方法,在程序成功运行并退出该方法后,在该方法中创建/排序/输入的数据将在程序的其余部分丢失。如果有人能帮我理解我每次都错过了什么,我真的很感激

public static void EnterArray(double[] array, int arraySize) {
Scanner input = new Scanner(System.in);
System.out.println("Array size: ");
arraySize = input.nextInt();
array = new double[arraySize];
for(int i=0; i<arraySize; i++) {
array[i]= input.nextInt();
}
input.close();
}

此方法将根据用户输入创建一个数组。在方法中,数据被正确存储,但一旦它退出方法,创建的数组就会消失。我想在我的程序的下一步和方法中使用这个数组

谢谢!

您可以更改方法签名并返回您从方法构建的数组:

import java.util.Arrays;
import java.util.Scanner;
public class MyClass {
private final Scanner input = new Scanner(System.in);
double[] array;
public static void main(String[] args) {
// Started this way to avoid the need for statics.
new MyClass().startApp(args);
}
private void startApp(String[] args) {
fillArray();

// Display Array In Console Window...
System.out.println(Arrays.toString(this.array));
}
public void fillArray() {
int arraySize = 0;
while (arraySize < 1) {
System.out.print("Enter an Array size: -> ");
try {
arraySize = input.nextInt();
} catch (Exception ex) {
System.out.println("Invalid Entry! Try again...");
arraySize = 0;
input.nextLine();  // consume ENTER key hit.
}
} 

array = new double[arraySize];

for(int i = 0; i < arraySize; i++) {
double val = 0d;
while (val == 0d) {
val = 0d; 
System.out.print("Enter Array Element #" + (i+1) + ": -> ");
try {
val = input.nextDouble();
} catch (Exception ex) {
System.out.println("Invalid Entry! Try again..." 
+ System.lineSeparator());
val = 0d;
input.nextLine();  // consume ENTER key hit.
}  
}
array[i] = val;
}
}
}

如果希望数组是类全局的,则将其声明为类成员(实例(变量,例如:

PD_4不要使用nextDouble()来填充双数组,使用System.in。此外,不要关闭System.in流,除非您确信您的应用程序不再需要它。如果这样做,则需要重新启动应用程序才能再次获得用户输入。JVM将在应用程序关闭时关闭CCD_5流。

最新更新