2014-10-17 32 views
1

我想分割一個字符串,並將字符串的每個數字存儲爲一個整數。如何將字符串拆分爲整數?

這裏是我的測試代碼:

public class test { 
    public static void main(String[] args){ 
     int firstGuessDigit, secondGuessDigit, thirdGuessDigit, fourthGuessDigit; 
     String guess = "1234"; 
     String[] parts = guess.split("\"); 
     firstGuessDigit = Integer.parseInt(parts[0]); 
     secondGuessDigit = Integer.parseInt(parts[1]); 
     thirdGuessDigit = Integer.parseInt(parts[2]); 
     fourthGuessDigit = Integer.parseInt(parts[3]); 
    } 

} 

當我運行程序時,我得到一個錯誤:「異常線程 「main」 java.lang.ArrayIndexOutOfBoundsException:1 在test.main(test.java :11)

+1

爲什麼不使用String方法'toCharArray'? – AntonH 2014-10-17 21:53:09

+0

String [] parts = guess.toCharArray(); – 2014-10-17 21:55:50

+0

@AntonH如果我使用這種方法,我可以分別訪問每個數字嗎? – Smo 2014-10-17 21:55:59

回答

1

您可以使用String#toCharArray代替:

char[] parts = guess.toCharArray(); 
firstGuessDigit = Integer.parseInt(Character.toString(parts[0])); 
secondGuessDigit = Integer.parseInt(Character.toString(parts[1])); 
thirdGuessDigit = Integer.parseInt(Character.toString(parts[2])); 
fourthGuessDigit = Integer.parseInt(Character.toString(parts[3])); 
+0

非常感謝! – Smo 2014-10-17 22:01:09

+0

如果str被改變,這仍然可以拋出java.lang.ArrayIndexOutOfBoundsException的異常,正確的方法是循環它。喜歡它是這樣做的[這裏](http://stackoverflow.com/a/26434013/1085186) – StackFlowed 2014-10-17 22:01:20

+0

@wrongAnswer我傾向於保持儘可能接近OP的答案。如果他們不使用循環,我也不會。但是,是的,循環會更好(「正確」是可辯論的)。我懶得添加'try ... catch'代碼。 – AntonH 2014-10-17 22:06:51

2

你得到的錯誤是因爲你正在嘗試做的部分[1]當它不擁有它。

您正在尋找

代碼是:

String guess = "1234"; 
int[] guessInteger = new int[guess.length()]; 
int i=0; 
for(Character ch : guess.toCharArray()){ 
    if(Character.isDigit(ch)){ 
     guessInteger[i++] = Character.getNumericValue(ch); 
    } 
} 
+2

或簡單''int [] guessInteger = guess.chars()。map(Character :: getNumericValue).toArray();' – dusky 2014-10-17 22:03:25

+0

@dusky我們需要了解OP顯然是一個初學者。所以讓他們通過它瞭解和調試簡單。 – StackFlowed 2014-10-17 22:05:00

+1

沒有必要將'Character'轉換爲'String'並調用'Integer.parseInt'。您可以使用'Character.getNumericValue(ch)'或'Character.digit(ch,10)'獲取數值。 – 2014-10-17 22:06:37

1

您可以使用chars()流獲取字符串中的字符,並將它們與Character.getNumericValue映射到它們的數值:

"1234".chars().map(Character::getNumericValue).toArray() 

如果你喜歡將它們作爲列表而不是數組,可以使用:

"1234".chars().map(Character::getNumericValue).boxed().collect(Collectors.toList()) 
0

這應該做到這一點。

public class Test { 

    public static void main(String[] args) { 

     int firstGuessDigit, secondGuessDigit, thirdGuessDigit, fourthGuessDigit; 
     String guess = "1234"; 

     String[] parts = new String[4]; 
     for(int i = 0; i < 4; i++) { 
      parts[i] = ""+guess.charAt(i); 
     } 

     firstGuessDigit = Integer.parseInt(parts[0]); 
     secondGuessDigit = Integer.parseInt(parts[1]); 
     thirdGuessDigit = Integer.parseInt(parts[2]); 
     fourthGuessDigit = Integer.parseInt(parts[3]); 

    } 

}