значение не сохраняется в переменной между различными методами (начинающий java-проект)

#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);
}