2010-04-13 137 views
5

我想輸入我的nirc數字,例如S1234567I然後把1234567 individualy作爲整數indiv1charAt(1)indiv2charAt(2)indivcharAt(3)等。然而,當我使用下面的代碼,我似乎無法得到,甚至第一個數字呢?任何想法?Java:charAt轉換爲int?

Scanner console = new Scanner(System.in); 
    System.out.println("Enter your NRIC number: "); 

    String nric = console.nextLine(); 

    int indiv1 = nric.charAt(1); 
    System.out.println(indiv1); 

回答

15

你會得到49,50,51等出來 - 這些都是爲人物 '1', '2', '3' 等

如果知道Unicode碼點,他們將西方的數字,你可以只減去「0」:

int indiv1 = nric.charAt(1) - '0'; 

但是,你只能這樣做後,你已經在別處驗證該字符串格式是正確的 - 否則你」最終會出現虛假數據 - 例如,'A'最終會返回17而不是導致錯誤。

當然,其中一種方法是取值,然後檢查結果是否在0-9範圍內。另一種方法是使用:

int indiv1 = Character.digit(nric.charAt(1), 10); 

如果字符不是合適的數字,則返回-1。

我不確定這後一種方法是否會覆蓋非西方數字 - 第一個數字肯定不會 - 但聽起來這不會成爲您的問題。

-1

int indiv1 = Integer.parseInt(nric.charAt(1));

+1

的Integer.parseInt需要一個字符串,而不是一個字符。 – 2010-04-13 06:30:44

+0

heh oops Integer.parseInt(Character.toString(nric.charAt(1))); :P 或 Integer.parseInt(nric.substr(1,1)); 但嚴重的是,只要跟Jon Skeet的答案一起去。 – jonathanasdf 2010-04-13 06:49:35

0
try { 
    int indiv1 = Integer.parseInt ("" + nric.charAt(1)); 
    System.out.println(indiv1); 
} catch (NumberFormatException npe) { 
    handleException (npe); 
} 
0

我知道問題是關於字符爲int但值得一提的,因爲在焦炭負太))

從JavaHungry如果你不瓦納使用字符必須注意的整數 負數。

字符串轉換爲整數:僞碼

1. Start number at 0 

    2. If the first character is '-' 
        Set the negative flag 
        Start scanning with the next character 
      For each character in the string 
        Multiply number by 10 
        Add(digit number - '0') to number 
      If negative flag set 
        Negate number 
        Return number 

公共類StringtoInt {

public static void main (String args[]) 
{ 
    String convertingString="123456"; 
    System.out.println("String Before Conversion : "+ convertingString); 
    int output= stringToint(convertingString); 
    System.out.println(""); 
    System.out.println(""); 
    System.out.println("int value as output "+ output); 
    System.out.println(""); 
} 




    public static int stringToint(String str){ 
     int i = 0, number = 0; 
     boolean isNegative = false; 
     int len = str.length(); 
     if(str.charAt(0) == '-'){ 
      isNegative = true; 
      i = 1; 
     } 
     while(i < len){ 
      number *= 10; 
      number += (str.charAt(i++) - '0'); 
     } 
     if(isNegative) 
     number = -number; 
     return number; 
    } 
}