【问题标题】:How do I check to see if the input is an integer?如何检查输入是否为整数?
【发布时间】:2014-01-10 23:43:11
【问题描述】:

对我的教授非常沮丧,因为她没有教trycatch概念,也没有教我们抛出异常,所以我很难做这个程序。 目标是制作一个程序,要求用户输入一个整数,该整数打印出整数倍的“Hello World”。问题是我无法检查以确保用户输入是一个整数。例如,如果用户选择键入 characterdouble,我该如何在我的代码中实现呢?而且我不能使用抛出异常或尝试捕获,因为我们还没有学习它们。谢谢大家!!!

 import java.util.Scanner;

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

      System.out.println("Please enter an integer that shows the " + 
      "number of times to print \"Hello World\" : ");
      //store count
      number = scan.nextInt();

      System.out.print("Your integer is " + number);
      int remainder = number%1;
      int counts = 0;

      if( number>0 && remainder == 0)
      {
         while(counts <= number)
         {
            System.out.println("Hello World!");
            counts++;
            }
       }
       else
       System.out.print("Wrong, choose an integer!");

           }
         }

【问题讨论】:

  • 老实说,如果您的班级仍处于输入整数并进行简单循环的阶段,那么您的教授还没有教您异常处理是有道理的。我建议你的教授可能知道她在做什么,她将在后面的课程中介绍异常处理。
  • 她会的,但是当她给我们一个很高兴需要异常处理的任务时,我感到很沮丧。

标签: java loops input integer


【解决方案1】:
scan.hasNextInt()

将检查输入流中的下一个值是否为整数。

这样:

int number = -1;

System.out.println("Please enter an integer that shows the " + 
  "number of times to print \"Hello World\" : ");
//store count
if (scan.hasNextInt()) number = scan.nextInt();

if (number != -1) System.out.print("Your integer is " + number);

【讨论】:

  • 请注意,由于the blocking,这可能会引入非整数的意外行为。
  • 我收到一个类型不兼容的错误,因为它是一个 .hasNext 是一个布尔表达式,而不是一个整数表达式。
  • @PatGreens 阅读文档。 has 表示它检查 if 是否存在 int。要读取 int,请使用 nextnextInt
  • 可以将数字初始化为它不会是的值。
  • 折磨结束了。谢谢。
【解决方案2】:

您可以使用循环并使用正则表达式验证输入,如下所示:

Scanner scan = new Scanner(System.in);
String input = null;
while (true) {
    input = scan.nextLine();
    if (input.matches("\\d+")) {
        break;
    }
    System.out.println("Invalid input, please enter an integer!");
}
int number = Integer.parseInt(input);

这将一直要求输入,直到输入有效的整数。

【讨论】:

    【解决方案3】:

    我不能使用 throw 异常或 try and catch 因为我们没有 学习它们。

    对于第一次尝试,您可以创建一个接受字符串作为参数的方法。您将遍历此字符串的所有字符并检查每个字符是否为数字。虽然此方法返回 false,但请重新向用户询问新的输入。

    然后使用Integer.valueOf 得到int 的值..

    public static boolean isNumber(String input)
    
    1. 您必须使用 sc.nextLine() 来获取输入
    2. Character.isDigittoCharArray() 方法会很有用

    【讨论】:

    • 我不能在这个作业中使用课程,忘了说,不是你的错:(
    • Scanner 是一个类! ;)
    • 我知道,但她说这是一个简单的程序,所以我们不能使用静态类之类的东西。我们学会了扫描仪哈哈,她超级挑剔。
    猜你喜欢
    • 2016-05-19
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多