2014-10-12 101 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(); 


    } 

} 

我現在沒有時間詳細瞭解所有的細節,但問,我會很樂意迴應我的時間! :)

相關問題