作者cio1030 (爪蛙)
看板java
標題[問題] 數值轉換parseInt出現例外
時間Thu Jan 13 04:47:03 2011
Scanner input=new Scanner(System.in);
System.out.print("請輸入一串數字:");
String num=input.next();
String[] word=num.split("");
int[] count=new int[10];
for(int i=0;i<word.length;i++)
{
count[Integer.parseInt(word[i])]++;
}
for(int i=0;i<count.length;i++)
{
System.out.println(i+" "+count[i]);
}
問題:輸入一串數字,並計算每個數字出現的次數
例外錯誤:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:48)
at java.lang.Integer.parseInt(Integer.java:470)
at java.lang.Integer.parseInt(Integer.java:499)
at ex19.main(ex19.java:21)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.35.210
推 a1234957:""就例外拉 01/13 06:07
加例外後 好像也轉不過去‥好像是因為拆成String後 每個數字的後面會加個什麼東西
//String[] word=num.split("");
char[] word=num.toCharArray();
count[(word[i]-'0')]++;
改這樣就能過了
只是我很好奇為何 char-char後 會變int?
還有原方法 是否有其它解
原方法compiler能過,但一旦輸入一串數字 仍會出現例外
其實也有想過 將char 轉成byte 在去判斷ascii碼
不過 想說用原方法 應該會比較簡潔
※ 編輯: cio1030 來自: 114.37.109.249 (01/13 14:49)
推 sansea:把num.splut("")陣列裡面的元素一個一個print出來看看囉~ 01/13 23:13
推 chenchen142:也許原方法word[0]=="", 所以無法轉int? 01/14 11:14
→ chenchen142:應該說word[0].equals("") 01/14 11:25