#java #while-loop #java.util.scanner
#java #цикл while #java.util.scanner
Вопрос:
У меня возникла небольшая проблема с правильной запуском этой программы.
/**
*
* @author Randy
*/
import java.util.Scanner;//Import scanner
public class RandyGilmanhw2a {
int year_of_birth;
int age;
public RandyGilmanhw2a (){//begin constructor
year_of_birth = 1900;
age = 0;
}//end constructor
public int getYear(){//get year method
return year_of_birth;
}//end method
public int getAge(int year_of_birth){//get year method
age = 2014 - year_of_birth;
return age;
}//end get year method
public void setYear (int year){//set year method
this.year_of_birth = year;
}//end method
public static void main(String[] args) {//begin main
RandyGilmanhw2a user1 = new RandyGilmanhw2a();
Scanner year = new Scanner(System.in);//create a scanner object
System.out.println("Please enter the year you were born: ");
int year_of_birth = year.nextInt();
while( year_of_birth < 1900 || year_of_birth > 2014 ) {//begin while loop
System.out.println("Please reenter the year you were born." );
System.out.println("You must have an integer between 1900 and 2014:" );
System.out.println("n");
System.out.println("Please enter the year you were born: ");
int year_of_birth = year.nextInt();//ERROR OCCURS HERE SAYS VARIABLE
//year_of_birth ALREADY DEFINED IN METHOD MAIN
}//end while
user1.getAge(year_of_birth);
System.out.println("You are " age " years old." );//ERROR HERE SAYS NON-STATIC
// VARIABLE age CANNOT BE REFERENCED FROM A STAIC CONTEXT
}//end main
}//end class
Я прокомментировал области, которые отображают ошибку. Я пытаюсь создать программу, которая отображает возраст человека, вводя в него возраст. Однако, если они вводят год до 1900 или после 2014, я хочу, чтобы он попросил пользователя повторно ввести свой год рождения. Кажется, я не могу найти проблему. Буду признателен за любую помощь.
Ответ №1:
Просто удалите int
объявление. Таким образом, вы переопределяете переменную. Итак, переключите это:
int year_of_birth = year.nextInt();
к этому:
year_of_birth = year.nextInt();
Ответ №2:
Удалите int
at int year_of_birth = year.nextInt();
и измените вывод age на этот:
System.out.println("You are " user1.getAge(year_of_birth) " years old." );
Ответ №3:
Удалите int
из второй инициализации year_of_birth
, и ваша проблема должна исчезнуть.
Ответ №4:
Не определяйте year_of_birth
as int
снова в цикле while, как вы определили в out of loop.
while( year_of_birth < 1900 || year_of_birth > 2014 ) {//begin while loop
...
year_of_birth = year.nextInt();//just assign next value
...
}