2012-09-28 32 views
0

我想讓我的程序告訴用戶,如果他輸入了非整數,他應該再試一次,而不是像現在這樣終止整個主方法。問題部分的僞代碼:如何告訴我的if語句只接受整數?

int integer = input.nextInt(); 
If (user types in a non-integer) { 
    ("you have entered a false value, please retry"); 
    then let's user enter int value 
else { 
    assign nextint() to integer and continue 
} 
+0

語言是什麼呢? –

+0

這是一個java程序 –

+0

使用do-while循環,如以下答案中的assylias所述,並使用commons apache的StringUtils類來確定輸入是否爲整數。 –

回答

8

可以使用a while loop重新執行的代碼部分,直到用戶輸入一個適當的整數值。

do { 
    input = read user input 
} while(input is not an integer) 

看來你使用的是Scanner,所以你可以use the hasNextInt method

while (!input.hasNextInt()) { 
    let user know that you are unhappy 
    input.next(); //consume the non integer entry 
} 

//once here, you know that you have an int, so read it 
int number = input.nextInt(); 
+0

或直到用戶輸入退出命令(如果有)。 – Gamb

+0

在我看來,OP不知道如何檢查輸入是否是整數。 –

+0

爲while-part會這是正確的: while(input!= int) –

0

這是假設你是擔心進入比上輸入一個整數以外的其他用戶:

public static void main(String[] args) { 
    Integer integer = 0; 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter an integer:"); 
    String line = sc.next(); 
    integer = tryParse(line); 
    while(integer == null){ 
     System.out.print("The input format was incorrect, enter again:"); 
     integer = tryParse(sc.next()); 
    } 
    int value = integer.intValue(); 
} 

public static Integer tryParse(String text){ 
    try{ 
     return new Integer(text); 
    } catch 
    (NumberFormatException e){ 
     return null; 
    } 
} 
+0

解析條目有什麼意義?你已經調用'hasNextInt'來確定這個條目是否是一個整數... – assylias

+0

@assylias哎呀,改成我的意思。 – NominSim