2015-02-08 2 views
0

Я новичок в Java, и я нахожу это очень сложным из-за ошибок, с которыми я сталкиваюсь. Так что у меня есть проблемы с этим фрагментом кода:Ошибка с переменной Scanner во время цикла

Main Class:

public class Main { 

    public static void main(String[] args){ 

    Answer a = new Answer(); 

    String ans = null; 

    while(ans != "A"){ 

     ans = a.create(); 

     System.out.print(ans + "\n"); 

    } 

    } 

} 

Ответ класс:

import java.util.Scanner; 

public class Answer { 

    public String create(){ 

    Scanner s = new Scanner(System.in); 

    return s.next(); 

    } 

} 

Я хочу, чтобы программа позволит мне написать что-то. Тогда, если то, что я написал, не было буквой А, программа должна позволить мне написать что-то еще, иначе нужно остановиться. Но, хотя я пишу «А», программа все еще держится, позволяя мне написать что-то еще. Что не так с кодом?

ответ

2

Строка не может быть сравнима с использованием оператора! =. Вместо этого вы должны использовать while(!ans.equals("A")). Во-вторых, постарайтесь не воссоздавать объект Scanner в методе create. Это отходы ресурсов.

+0

Исключение в потоке "основного" java.lang.NullPointerException \t в Main.main (Main.java:14) (В строке 14 у меня в то время как (! Ans.equals ("А"))) – Arnau

+0

Это потому что изначально значение ans равно null. Вы должны установить его на то, что не является «A» –

+0

Хорошо. Оно работает! Хотя я не понимаю, почему я получил ошибку, если я установил ans = null – Arnau

Смежные вопросы