2014-10-12 142 views
-3

我想检查用户输入的号码,如果没有的话,就使用默认的数字,如10.如何检查是否只是按下回车和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 
+1

好吧,正在使用扫描仪接受输入或什么?向我们显示用户输入其数据的代码 – DreadHeadedDeveloper 2014-10-12 01:07:57

+0

是扫描仪,如number = input。扫描器(); – 2014-10-12 01:08:27

+0

好吧,发布你的代码,这样做,我可以肯定地帮你这个 – DreadHeadedDeveloper 2014-10-12 01:10:03

回答

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 
+0

还需要检查如果用户结束TTY会话抛出'NoSuchElementException';所以,'InputMismatchException | NoSuchElementException ime'上的Java7或一个全新的catch块的东西少。 – Qix 2014-10-12 01:12:51

+0

我不想要一个例外,我想我= 10如果什么都没有输入,那么我该怎么做 – 2014-10-12 01:14:01

+0

@RichardBarley这是**完全**答案是为你做的。请阅读'try ... catch'块。 – Qix 2014-10-12 01:15:03

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; 
} 
0第一两
+0

缺少分号,如果语句在语法上不正确,则不检查流结束。这段代码永远不会在普通编译器下编译。 – Qix 2014-10-12 01:14:35

+0

对不起,在近一年内没有写过java,也习惯了python :) – Boss1295 2014-10-12 01:16:12

+0

另外,它并没有处理用户原来的问题,这是设置一个默认值。感谢您的尝试,但没有。 – 2014-10-12 01:16:30

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()仅在用户实际输入内容时才会响应,而不是按下回车键。为了检查输入,我们使用了一种方法,当用户按下输入并使用该方法时,该方法会实际响应,以确保我们的代码符合我们的要求。我推荐使用的一个API是Java,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(); 


    } 

} 

我现在没有时间详细了解所有的细节,但问,我会很乐意回应我的时间! :)

相关问题