2013-11-02 33 views
0

好吧,所以當我使用這個代碼而不是9999時,我得到57每個9?相當困惑新的Java任何幫助將不勝感激!我已經創建了一個從char數組的數組,現在的值不匹配

public int[] getNumber(){ 

    String newNum; 

    Scanner input = new Scanner(System.in); 

    System.out.println("Please enter four digits"); 
    newNum = input.nextLine(); 
    char[] list = newNum.toCharArray(); 
    int[] numArray = new int[newNum.length()]; 

    for (int i = 0; i < newNum.length(); i++){ 
     numArray[i] = list[i]; 
    } 

    return numArray; 
} 
+2

檢出ASCII。 –

+0

這是因爲9被認爲是一個字符,它的ASCII值爲57。您需要將字符或字符串解析爲數字,而不是將其數字字符值進行轉換/存儲,這將與其數值不同。 – arynaq

回答

1

是的。 57是integer value of the char '9'。所以這是預期的。如果您想要字符的數字值,請使用

numArray[i] = list[i] - '0'; 
+0

完美的工作,是否有其他情況下'0'可以用來獲取數值? –

+0

'0'只是'((char)48)'的另一種語法。你必須明白,對於電腦來說,字符只是其他數字的數字。 Java語言允許輸入「0」而不是((char)48),因爲它更加直觀和易讀。但它實際上是一個長度爲2個字節的數字,其值爲48.'1'爲49,'2'爲50等。 –

相關問題