我的项目需要你的帮助。我正在编写一个程序,向学生展示之前用户填写的信息。这是关于我学到了多少方法。我已经编写了一个没有方法的程序。但是,当我使用通过引用传递时遇到的方法编写相同的东西时...我正在填充0.索引但是当我填充1.索引时,0索引变为空。我尝试了一切,但我无法解决这个问题我认为那是关于我的回报...这里是代码,你可以帮助我基本上方式因为你可以看到我的Java语言水平是初学者:);
//=========================================================== Methods
public static void record(String x, int y)
String[] stringArray = new String[100];
stringArray[y] = x;
return stringArray;
}
public static double[] record(double x, int y){
double[] doubleArray = new double[100];
doubleArray[y] = x;
return doubleArray;
}
和我的选择;
case 1: {
System.out.println("** Recording a new student");
System.out.println("*** Please use lower case");
in.nextLine(); // for solve skipping
System.out.print("Enter Student Name and Surname: ");
String namex = in.nextLine();
name=record(namex,accountNumber);
System.out.print("Enter Student Gender(m/f): ");
String genderx = in.nextLine();
gender=record(genderx,accountNumber);
System.out.print("Enter Student Number: ");
String studentNox = in.nextLine();
studentNo=record(studentNox,accountNumber);
System.out.print("Enter Student GPA: "); // i dont use method here for testing
gpa[accountNumber] = in.nextDouble();
accountNumber++;
System.out.println("New Student Recorded. There are ["+accountNumber+"] students in system.");
System.out.println("");
}break;
答案 0 :(得分:1)
问题是你每次在里面放一些东西时都要初始化数组:
String[] stringArray = new String[100];
double[] doubleArray = new double[100];
您必须确保这些数组的初始化只是在应用程序中一次,可能是在声明这些静态数组时。知道这一点,您的record
方法应该是这样的(基于您的代码):
public static void record(String x, int y)
stringArray[y] = x;
}
public static void record(double x, int y) {
doubleArray[y] = x;
}
另外,作为基础知识,Java 从不通过引用传递,它只传递值。更多信息:Is Java "pass-by-reference" or "pass-by-value"?