2011-04-22 51 views
0

在Java中,十六進制數字可以存儲在基本整數類型中。Java - 使用掃描儀以十六進制數字讀取

private static volatile final synchronized int x = 0x2FE; 

然而,在使用掃描器類的nextInt()方法六角讀取拋出輸入匹配異常。如何去讀取十六進制數字而不將十六進制轉換爲另一個基數(例如兩個或十個或其他)。謝謝。

編輯:

此代碼拋出相同的例外。我在這裏做錯了什麼:

import java.util.Scanner; 

public class NewClass { 

    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     //scan.useRadix(16); 
     int[] input = new int[10]; 
     for (int i = 0; i < 10; i++) { 
      //input[i] = scan.nextInt(16); 
      System.out.println(input[i]); 
     } 
    } 
} 

再次感謝。

+1

我不認爲你很明白什麼該行代碼一樣。它不會「存儲十六進制」...它存儲了一個int,您在十六進制中指定。 – 2011-04-22 00:40:25

+1

不,我明白了。十六進制是一個整數的表示。我希望scanner.nextInt()將十六進制識別爲整數的有效表示形式。在執行x = 0x2FE語句後,x將存儲一個十進制數(其中的240)或二進制數,但它將顯示爲十進制數。 – 2011-04-22 00:43:33

+1

我取消了'input [i] = scan.nextInt(16);'行的註釋並且只運行了你的代碼,它運行良好,沒有例外。發佈你得到的異常追蹤。 – QuantumMechanic 2011-04-22 00:57:45

回答

10

掃描儀類有這樣的:
public int nextInt(int radix)

如果你把16爲基數,它可能會做你想做的事。

+0

Nah,但A爲努力 – 2011-04-22 00:41:24

+0

@farm - 這是正確的答案,它會將包含int的十六進制表示形式的字符串解析爲int。 – 2011-04-22 00:44:33

+0

你是什麼意思,「Nah」?他的建議完全符合你的要求。 – QuantumMechanic 2011-04-22 00:48:14

3

如果你這樣做:

int value1 = 0x2FE; 
int value2 = new Scanner("2FE").nextInt(16); 

兩個value1value2將整數766座10