2013-05-08 4 views
0

Мне нужна ваша помощь для моего проекта. Я пишу программу, которая показывает информацию о том, что пользователи заполняют ранее. это о том, насколько я изучил методы. Я уже написал программу без методов. Но когда я пишу то же самое с методом, с которым я сталкивался с pass by reference ... я заполняю индекс 0., но когда я заполняю индекс 1., индекс становится нулевым. Я пробую все, но я не могу решить эту проблему, я думаю, что о моих возвращениях ... вот код, вы можете мне помочь в основном, так как вы можете видеть, что мой уровень языка 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; 
+2

Этот метод 'void', возвращающий String Array выглядит несколько странно. – Keppil

ответ

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

+0

Вы правы, это пропускная стоимость. моя ошибка ... так что я меняю свой код на них, и у меня есть массив stringArray с именем в моей основной, но мой компилятор, дающий ошибку для stringArray «... не может быть разрешен переменной» Мне нужно больше определить для этих массивов? –

+0

@ GökhanNas Из вашего фактического кода в вашем вопросе я не могу предоставить решение вашей новой проблемы. –

Смежные вопросы