用户使用Method输入的数组填充

时间:2013-05-08 17:03:14

标签: java arrays methods pass-by-reference

我的项目需要你的帮助。我正在编写一个程序,向学生展示之前用户填写的信息。这是关于我学到了多少方法。我已经编写了一个没有方法的程序。但是,当我使用通过引用传递时遇到的方法编写相同的东西时...我正在填充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;

1 个答案:

答案 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"?