2013-11-13 2 views
0

Я получаю эту ошибку: «не может статически ссылаться на нестатическое поле» каждый раз, когда я пытаюсь выполнить строку кода с .nextInt().Ошибка при использовании .nextInt()

Вот строки кода, которые могут повлиять (что я могу думать):

private Scanner input = new Scanner(System.in); 
int priceLocation = input.nextInt(); 
+0

Не могли бы вы разместить объявление d больше вашего кода? – sebtic

+0

Опубликовать больше кода. Нет проблем с тем, что вы написали. – Dropout

+0

Возможный дубликат [Java - статическая ссылка на нестатический список полей] (http://stackoverflow.com/questions/10200740/java-making-a-static-reference-to-the-non-static- field-list) –

ответ

2

Это скорее всего потому, что вы пытаетесь получить доступ к input в статическом методе, который я предполагаю, это должен быть метод main(). Что-то вроде этого

private Scanner input = new Scanner(System.in); 

public static void main(String[] args) { 
    int priceLocation = input.nextInt(); // This is not allowed as input is not static 

Вы должны либо сделать свой input в static или может переместить его внутри (основной ) метод static.

Решение1: Сделать inputstatic.

private static Scanner input = new Scanner(System.in); 

public static void main(String[] args) { 
    int priceLocation = input.nextInt(); 

Solution2: Перемещение input внутри основной (обратите внимание, что вы не можете использовать input в любых других методов, если его перемещается внутри main(), так как это будет локальным для него).

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    int priceLocation = input.nextInt(); 
+0

Я обращаюсь к этому в основном методе, поэтому, я думаю, он будет статичным, но как мне обойти это? – user1953907

+0

Проверьте ответ в ответе. – SudoRahul

+0

Вот и все. Благодаря! – user1953907

0
private Scanner input = new Scanner(System.in); // make this static 

Если доступ к этому внутри статического метода. вы должны сделать input статическим.

private static Scanner input = new Scanner(System.in); 
public static void main(String[] args) { 
    int priceLocation = input.nextInt(); 
    // without static you will get that error. 
} 
0

Это происходит из-за того, как вы определяете входной

private Scanner input = new Scanner(System.in); // notice private 
int priceLocation = input.nextInt(); 

Частные переменные определены в классе, вне методов, таких как

class myclass{ 

    private Scanner input = new Scanner(System.in); 
    void methodname(){ 
     int priceLocation = input.nextInt(); 
    } 
} 

Или, если вы хотите, чтобы определить вход внутри метод

class myclass{ 
    void methodname(){ 
     Scanner input = new Scanner(System.in); // you can make this a final variable if you want 
     int priceLocation = input.nextInt(); 
    } 
} 
Смежные вопросы