gpt4 book ai didi

java - 扫描仪 nextLine() 在 nextInt() 之后被跳过

转载 作者:行者123 更新时间:2023-12-01 22:22:55 25 4
gpt4 key购买 nike

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

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 输入。我一直在尝试各种方法来编写此内容,例如将该部分从循环中取出,但它仍然是相同的错误,我看不出导致此问题的原因。任何帮助将不胜感激。

最佳答案

/** 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();
}
}

关于java - 扫描仪 nextLine() 在 nextInt() 之后被跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58578997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com