台灣最大程式設計社群網站
線上人數
540
 
會員總數:245973
討論主題:189551
歡迎您免費加入會員
討論區列表 >> Java >> 讀取檔案,數字相加
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
讀取檔案,數字相加
價值 : 20 QP  點閱數:1409 回應數:7
樓主

Tobey Yeh
門外漢
0 3
113 13
發送站內信



出現以下錯誤

Exception in thread "main" java.lang.NumberFormatException: For input string: "1 2 Question "
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.valueOf(Unknown Source)
at ex01.main(ex01.java:13)



文字檔:

1 2 Question 1
3 3.2 My Answer
4.3 2.1 Simple
12.5 6 Do you quit?
5 5 3 idiots
36 1.2 A river
7.3 2.13 runs through
18.5 6.2 It is a river.

輸出結果: 螢幕顯示

3 Question 1
6.2 My Answer
6.4 Simple
18.5 Do you quit?
10 3 idiots
37.2 A river
9.43 runs through
24.7 It is a river.
---------------------------------------------------------------------------------------------

我換了很多方法寫,可是打上 int token1 = Integer.valueOf(tokens[0]);

就無法由字串轉換成數字,我用過trim清掉空白字串也是不行,求幫忙

本篇文章發表於2014-03-10 19:49
1樓
回應

香帥
檢舉此回應
utf8檔案有的有前導字元3bytes,第一行您要先判斷,若有的話第一行從第四個byte取值,就能避開問題
本篇文章回覆於2014-03-10 22:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Tobey Yeh
檢舉此回應
請問要怎麼寫呢?
本篇文章回覆於2014-03-12 08:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

香帥
檢舉此回應

本篇文章回覆於2014-03-15 21:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

Tobey Yeh
檢舉此回應
還是不行
本篇文章回覆於2014-03-16 21:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

香帥
檢舉此回應
檔案資料建議上傳方便判斷看不見的分隔字元
本篇文章回覆於2014-03-16 23:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Tobey Yeh
檢舉此回應


原來的答案:

3 Question 1
6.2 My Answer
6.4 Simple
18.5 Do you quit?
10 3 idiots
37.2 A river
9.43 runs through
24.7 It is a river.
---------------------------------------------------------------------

可是我相加輸出的答案只輸有這樣:

3.0 Question
6.2 My
6.4 Simple
18.5 Do
10.0 3
37.2 A
9.43 runs
24.7 It
---------------------------------------------------------------------

後面的英文不見了,如果我+入tokens4,答案出現陣列索引值錯誤

有沒有辦法輸出後面的英文字
本篇文章回覆於2014-03-17 15:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

Raymond
檢舉此回應
輸入檔每一行至少有兩個 fields, 且前兩個 fields 一定是數字, 你的目的是要把輸入檔每一行的前兩個 fields 的數值相加, 打印結果, 然後接著輸出後面的資料:
第 17 行
改成有 limit 的 split, regular expression 用 \\s+ 會更好:

這是把第三個 word 及以後的資料當作一個 field 來看.

你原來的程式碼用的是沒有 limit 的 split, 每一個空格間隔的 word 都會放在一個元素裡, tokens 陣列的長度可能會是 3 或更多, 你要輸出所有的 word 就要從 tokens[2] 到 tokens[tokens.length-1] 都輸出, 你之前只輸出 tokens[2], 當然跟應有的結果不符.


在 while 結束後, 記得關閉 br:

本篇文章回覆於2014-03-17 20:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.