#java
#java
Вопрос:
У меня здесь два метода, первый генерирует идентификатор студента и сохраняет его в качестве значения, этот метод работает отлично, и значение сохраняется, но во втором способе, когда я беру эту переменную из первого метода, показываю, что она равна 0, в чем проблема?
ps. Я работал с другим методом, который возвращает строку
// generate a student id
public int studentid(int grade) {
System.out.println("now we gonna gerate an id number ");
int id = grade * 10000;
int t = 1000;
for(int i = 0; i<4 ; i ) {
int random = (int)(Math.random() * 9);
random = random * t;
id = id random;
t = t / 10;
}
System.out.println("your id number is : " id);
return id;
}
// show name , id , grade and course enrolled
public void getInfo() {
System.out.println("Student's First name: " FirstName);
System.out.println("Student's Last name: " LastName);
System.out.println("Student's grade year: " grade);
System.out.println("Student's id number: " id);
System.out.println("Student's courses: " v);
}
now we gonna gerate an id number
your id number is : 88222
Student's First name: luke
Student's Last name: goob
Student's grade year: 8
Student's id number: 0
Student's courses: null
Комментарии:
1. Где вы храните возвращаемое значение метода?
2. вероятно, вы неправильно сохраняете или восстанавливаете значение. Недостаточно кода для определения.
3. @Kayaman , я нигде его не сохранял, я думал, что оно будет сохранено в «id», чем это отличается, если я создам другую переменную и отсортирую ее в ней, а не просто использую переменную в методе (id).
4. Вы сохраняете его в локальной переменной
id
, которая исчезает при завершении метода, вы возвращаете его из метода. Вызывающий должен где-то присвоить возвращаемое значение, иначе оно будет потеряно навсегда.
Ответ №1:
В методе studentid
вы определяете локальную переменную id
. Это скрывает переменную экземпляра класса id
. Метод возвращает значение, которое он вычисляет, но не присваивает его переменной экземпляра.
Вы можете изменить этот метод, чтобы присвоить вычисленное значение переменной экземпляра
public int studentid(int grade) {
int id =
... calcuation happens...
this.id = id;
return id;
}
Или тот, кто вызывает этот метод, может затем установить значение для переменной экземпляра.
public void someMethod(int grade) {
this.id = studentid(grade);
}