2017-10-14 47 views
0
Scanner scan = new Scanner(System.in); 
System.out.println("Please enter a number with 4 digits: "); 
while(!scan.hasNextInt()){ 
    //If the next int is not an integer, it will allow you to input again until an int is recieved 
    scan.next(); 
} 
int n = scan.nextInt(); 
String strn = "" + n; 

我遇到的問題是,當用戶輸入一個帶有零的代碼作爲第一個數字時,例如0481,它將被保存在字符串中作爲481.如何確保計數前導零在這種情況下?當採用4位數碼時,如果它是第一個數字,則不計算0; Java

+1

你得到一個'int'但希望收到'string'?從輸入中獲取一個字符串,並稍後檢查它的唯一數字。沒有辦法在'int'中獲得前導零。 – VTodorov

+0

@Spooks - 你錯過了這一點。使用'next()'而不是'nextInt()'。 –

+1

int的前導零表示「八進制」。不要這樣做。 https://stackoverflow.com/questions/565634/integer-with-leading-zeroes – duffymo

回答

0

不讀取整數。如果您想要前導零,請使用字符串。

請嘗試以下

String strn; 
do { 
    strn = scan.nextLine(); 
    if (strn.matches("\\D") { 
     // there's a non numeric value entered, repeat loop 
    } else { break; } 
} while (true) 
0

如果您想保留前導零,你將需要使用字符串,而不是,你就可以使用正則表達式或檢查每一個數字,以確保該號碼是有效的。

如果您要添加的前導零後面你會更好使用的String.format,這樣

int x = 55; 
    String formatted = String.format("%04d", x); 

這使得格式化包含0055

你有問題的原因是int只保存一個數字,而從值的角度來看,05和5是相同的,所以int將它們存儲爲相同的,並且它被輸出爲默認所需的最少位數。

0

前導零在數字INT VAL 0044的情況下,算的上是永遠44

試試這個:

Scanner scan = new Scanner(System.in); 
System.out.println("Please enter a number with 4 digits: "); 
while(!scan.hasNextInt()){ 
    //If the next int is not an integer, it will allow you to input again 
    until an int is recieved 
    scan.next(); 
} 
String strn = scan.nextLine(); 
相關問題