检查用户是否输入了什么?

时间:2014-10-12 01:06:41

标签: java

我正在尝试检查用户是否输入了数字,如果没有,则使用默认数字10,如何检查用户是否只按Enter键并且未在Java中输入任何内容

input = scanner.nextInt();
pseudo code:
if(input == user just presses enter without entering anything){
    input = 10;
}
else just proceed with input = what user entered

3 个答案:

答案 0 :(得分:2)

//scanner is a Scanner
int i; // declare it before the block
try {
  i = scanner.nextInt();
}
catch (InputMismatchException ime) {
  i = 10;
}
// i is some integer from the user, or 10

答案 1 :(得分:1)

首先,geeeeeez家伙,当OP说出像

这样的东西时

“我不想要例外,如果没有输入,我希望i = 10,那么我该做什么”

那应该提示你,他可能不太了解异常(甚至可能是java),可能需要一个简单的答案。如果那是不可能的,请向他解释困难的事情。

好的,这是简单明了的方法

String check;

int input = 10;

check = scanner.nextLine/*Int*/();

if(check.equals(""))
{

    //do nothing since input already equals 10

}

else
{

    input = Integer.parseInt(check);

}

让我解释一下这段代码在做什么。您最初使用nextInt()来获取输入的数字,对吗?问题是,nextInt()仅在用户实际输入内容时才响应,而不是按Enter键。为了检查输入,我们使用了一种方法,当用户按下回车时实际响应并使用它来确保我们的代码完成我们想要的操作。我建议使用的一个是API,Java有一个。

以下是API HERE

的链接

这是我使用HERE的实际方法的链接。您可以在此API中找到有关您将遇到的许多方法的说明和说明。

现在,回到我的回答,这是简单的方法。问题是,这段代码不一定安全。如果出现问题,或者有人试图入侵您的系统,它会抛出异常。例如,如果您输入一个字母而不是按Enter键或输入一个数字,则会抛出异常。您在其他答案中看到的是我们所谓的异常处理,这就是我们如何确保异常不会发生。如果你想要一个能够捕获大多数这些异常的答案,你需要确保你的代码能够捕获它们,或者将它们全部避开(我极大地简化了这些事情)。上面的答案是工作代码,但不是安全的代码,你不会在现实生活中单独使用这样的东西。

这可能被视为安全代码。保持简单也没有例外! ;)

import java.util.Scanner;

public class SOQ15
{

   public Scanner scanner;

   public SOQ15()
   {

      scanner = new Scanner(System.in);

      int input = 10;

      boolean isAnInt = true;

      String check;

      check = scanner.nextLine/*Int*/();

      if(check.equals(""))
      {

         //do nothing since input already equals 10

      }


      for(int i = 0; i < check.length(); i++)
      {

         if(check.charAt(i) >= '0' && check.charAt(i) <= '9' && check.length() < 9)
         {

         //This is if a number was entered and the user didn't just press enter

         }

         else
         {

            isAnInt = false;

         }



      }

      if(isAnInt)
      {

         input = Integer.parseInt(check);
         System.out.println("Here's the number - " + input);

      }

   }

   public static void main(String[] args)
   {


      SOQ15 soq = new SOQ15();


   }

}

我现在没有时间详细介绍所有细节,但是当我有空的时候,我会很乐意回复! :)

答案 2 :(得分:0)

如果你使用扫描仪,如果提供了详细信息,你可以尝试:

Scanner in = new Scanner(System.in);
if in.hasNextInt(){ //Without this, the next line would throw an input mismatch exception if given a non-integer
     int i = in.nextInt(); //Takes in the next integer
}

你说你希望默认值为10,否则就是这样:

else {
     int i = 10;
}