2015-01-27 2 views
-1

Кто-нибудь знает, почему мой сканер запрашивает ввод каждые три строки, а не каждую строку? Если вы запустите его, вы увидите, что он сначала задает вопрос, но затем не для двух строк, а затем снова задает вопрос. Как заставить его задавать вопрос в каждой строке, не говоря уже о том, чтобы хранить его в связанном списке.Почему мой сканер запрашивает ввод каждые три строки?

import java.util.Scanner; 

public class StackCalc { 

    public static StackLL stackll = new StackLL(); 

    public static void create() { 

     String hold = new String(); 
     Scanner scanner = new Scanner(System.in); 
     boolean running = true; 
     while (true) { 
     System.out.print("Enter number, math operation(+,-,*, or /), or Q to quit: "); 
     hold = scanner.next(); 


     if (scanner.next().equals("Q") || scanner.next().equals("q")) { 
      System.out.println(hold); 
      break; 
     } 
    } 

} 

public static boolean checkInt(String s, int it){ 
    Scanner scan = new Scanner(s.trim()); 
    if(!scan.hasNextInt(it)) 
     return false; 
    scan.nextInt(it); 
    return !scan.hasNext(); 
    } 

    public static void main(String args[]) { 
     create(); 
    } 
} 

Любой вход был бы потрясающим.

+0

возможно дубликат [Пропуск nextLine() после использования nextInt()] (http://stackoverflow.com/questions/13102045/skipping-nextline-after-use -nextint) –

+0

@AlexisKing Я не вижу в программе nextLine() – kirbyquerby

+0

То же самое происходит, когда я использую .nextLine(); – Matt

ответ

3

Это происходит потому, что вы используете метод Scanner.next() три раза:

hold = scanner.next()

scanner.next().equals("Q")

и scanner.next().equals("q")

Вместо этого, только называют его один раз меняется:

scanner.next().equals("Q") до hold.equals("Q")

и

scanner.next().equals(q") к hold.equals("Q")

+0

Спасибо, это действительно сработало. – Matt

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