Я прошу прощения, если ответ на этот вопрос настолько очевиден, что я даже не должен публиковать его здесь, но я уже искал ошибку, компилируя следующие результаты кода и не нашел объяснений, способных проникнуть в мой толстый необразованный череп.
Эта программа предназначена для того, чтобы сделать 2 целых числа от пользователя и распечатать их, но мне как-то удалось испортить это.
import java.util.Scanner;
public class Exercise2
{
int integerone, integertwo; //putting ''static'' here doesn't solve the problem
static int number=1;
static Scanner kbinput = new Scanner(System.in);
public static void main(String [] args)
{
while (number<3){
System.out.println("Type in integer "+number+":");
if (number<2)
{
int integerone = kbinput.nextInt(); //the integer I can't access
}
number++;
}
int integertwo = kbinput.nextInt();
System.out.println(integerone); //how do I fix this line?
System.out.println(integertwo);
}
}
Объяснение или ссылка на правильную литературу были бы весьма полезны.
EDIT: Я хочу использовать цикл здесь, чтобы исследовать несколько способов делать то, что это предназначено.
Удалите ключевое слово int
при использовании той же переменной во второй раз. Потому что, когда вы это делаете, он по существу объявляет другую переменную с тем же именем.
static int integerone, integertwo; // make them static to access in a static context
... // other code
while (number<3){
System.out.println("Type in integer "+number+":");
if (number<2)
{
integerone = kbinput.nextInt(); //no int keyword
}
number++;
}
integertwo = kbinput.nextInt(); // no int keyword
И он также должен быть static
так как вы пытаетесь получить к нему доступ в статическом контексте (то есть) в основном методе.
Другой вариант - объявить его внутри метода main()
но до того, как ваш цикл начнется, чтобы он был доступен по основному методу (как это предлагает "Патриция Шанахан").
public static void main(String [] args) {
int integerone, integertwo; // declare them here without the static
... // rest of the code
}
Как насчет:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner kbinput = new Scanner(System.in);
System.out.println("Type in an integer: ");
int integerone = kbinput.nextInt();
System.out.println("Type another: ");
int integertwo = kbinput.nextInt();
System.out.println(integerone);
System.out.println(integertwo);
}
}
main()
.