【问题标题】:Figuring out if a number is an input in Java? [duplicate]确定数字是否是 Java 中的输入? [复制]
【发布时间】:2014-02-18 04:08:27
【问题描述】:

我制作了一个程序,要求用户输入 0-8 之间的数字,如果不是数字,则会出现一条消息,要求输入数字。如果输入了一个字母,则在下一行会说“请输入一个数字”。

我该怎么做?如果大于 8,则保持 8,如果小于 0,则保持 0。

        if (number >= 8) {
            number = 8;
        } else if (number <= 0) {
            number = 0;
        }

更新:

    System.out.println("Enter The Number you want:<0 - 8> "); 
    number = in.nextInt(); \\ in is the name of scanner 

    try {
      if number = in.nextInt(); 
      if(number >= 8) {
        number = 8;
      } else if (number <= 0) { 
        number = 0;
      }
    } catch (NumberFormatException e) {
      System.out.println("Enter a number");
    }

这不起作用,我做错了什么?

【问题讨论】:

标签: java


【解决方案1】:

您可以使用Scanner 类从System.in 中读取并检查字符串是否为数字:

import java.util.Scanner;
import java.util.InputMismatchException;

Scanner sc = new Scanner(System.in);
try {
    int i = sc.nextInt();
} catch (InputMismatchException exc) {
    System.out.println("not a number");
}

【讨论】:

  • ' System.out.println("输入你想要的数字: "); number = in.nextInt(); \\ in 是扫描仪的名称 try { if number = in.nextInt();如果(数字 >= 8){ 数字 = 8; } else if (number
  • 你应该抓住InputMismatchException,而不是NumberFormatException
  • ` System.out.println("输入你想要的数字: "); number = in.nextInt();尝试 { number = in.nextInt();如果(数字 >= 8){ 数字 = 8; } else if (number
  • 好吧,你在 try-catch 块之外调用in.nextInt。我什至不知道你为什么需要两个in.nextInt 电话。
  • 所以我再次从头开始编写了您提供的代码,并且成功了,谢谢!但这并没有停止程序,程序应该在用户输入字母时结束,而应该是数字。我该怎么做?
【解决方案2】:

除了 Nigel Tufnel 的回答之外,如果您没有使用 Scanner(例如,而是使用 BufferedReader),您可以使用以下内容:

System.out.print("Please enter a number: ");
String numberString = in.readLine();
try {
    int number = Integer.parseInt(numberString);
    System.out.println("You chose number " + number + "!");
} catch (NumberFormatException nfe) {
    System.out.println("Please enter a number");
}

【讨论】:

  • 我正在使用扫描仪,但感谢您的回答。
猜你喜欢
  • 2014-08-03
  • 2011-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-12
  • 2013-12-10
相关资源
最近更新 更多