如何使用 Scanner 获取 String 和 int 与仅获取 String?

问题描述 投票:0回答:1

我有一些代码可以根据用户的输入运行两个数字的加法或减法,其中他们可以键入一个字符串后跟一个整数,也可以仅键入一个字符串,具体取决于用户想要执行的操作。

我的代码如下所示:

public static void main(String[] args){
  Scanner kb = new Scanner(System.in);
  String operation = "";
  int result = 0, num = 0;
  boolean finished = false;
  
  while(!finished){
    System.out.println("Enter the operation you'd like to perform on " + result + " or type q to quit.");
    operation = kb.next();
    if(kb.hasNextInt()){ num = kb.nextInt(); }
    
    switch (operation){
      case "add":
        add(num, result);
        break;
      case "subtract":
        subtract(num, result);
        break;
      case "q":
        finished = true;
        break;
    }
    System.out.println("New result: " + result);
  }
  System.out.println("Bye!");
}

  //add() and subtract() methods go here

我希望

if(kb.hasNextInt())
方法能够检测用户是否输入了 int,并且仅在输入时运行以下代码,然后照常继续其余代码,但是扫描仪只是继续接受输入,直到出现某些情况(除了输入空格)。 我考虑将整个输入作为字符串并使用 .split() 来提取 int,但这似乎是一个糟糕的解决方案,我确信一定有一些我没有想到的更简单的方法。如有任何帮助,我们将不胜感激!

java string integer java.util.scanner
1个回答
0
投票

尝试更改您的代码如下

    if(kb.hasNextInt())
    { num = kb.nextInt(); }
    else
    {kb.next();continue;}

hasNextInt
仅检查输入,并不实际处理它们。所以你需要使用
next
来跳过之前的输入。

© www.soinside.com 2019 - 2024. All rights reserved.