【问题标题】:Scanner nextLine() is being skipped after nextInt()扫描仪 nextLine() 在 nextInt() 之后被跳过
【发布时间】:2019-10-27 11:34:07
【问题描述】:

我正在尝试制作一个循环的计算器程序,用户可以在其中输入一个数字,然后他希望对该数字执行的操作,直到他输入“=”作为运算符。包含结果的变量在类中初始化为零,应用的默认运算符是“+”。

import java.util.Scanner;

public class main {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        Calculator c = new Calculator();
        boolean flow = true;

        while(flow) {
            System.out.println("Number :");
            int userEntry = scan.nextInt();
            System.out.println("Operator :");
            String operation = scan.nextLine();

            switch(operation) {
            case "+":
                c.setOperation(Calculator.ADDITION);
                break;
            case "-":
                c.setOperation(Calculator.SOUSTRACTION);
                break;
            case "*":
                c.setOperation(Calculator.MULTIPLICATION);
                break;
            case "=":
                c.getResult();
                return;
            default:
                System.out.println("Please enter a valid operator.");
            }
            c.apply(userEntry);
            c.getResult();
        }
    }
}

但是每次我尝试运行程序时,我都会得到这个结果

Number :
4
Operator :
Please enter a valid operator.
Number :
67
Operator :
Please enter a valid operator.
Number :

程序不允许我在运算符中输入一个输入,直接跳到下一个下一个 int 输入。我一直在尝试各种方式来写这个,比如把那部分从循环中取出,但它仍然是同样的错误,我看不出是什么原因造成的。任何帮助将不胜感激。

【问题讨论】:

    标签: java string input java.util.scanner


    【解决方案1】:
    /** Scanning problems */
    class Scanning {
        public static void main(String[] args) {
            int num;
            String txt;
            Scanner scanner = new Scanner(System.in);
    
            // Problem: nextLine() will read previous nextInt()
            num = scanner.nextInt();
            txt = scanner.nextLine();
    
            // solution #1: read full line and convert it to integer
            num = Integer.parseInt(scanner.nextLine());
            txt = scanner.nextLine();
    
            // solution #2: consume newline left-over
            num = scanner.nextInt();
            scanner.nextLine();
            txt = scanner.nextLine();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-10-17
      • 2013-01-31
      • 2021-11-11
      相关资源
      最近更新 更多