看板 java 關於我們 聯絡資訊
小弟我現在有筆資料如下: 5, 3, 0, 0, 7, 0, 0, 0, 0 6, 0, 0, 1, 9, 5, 0, 0, 0 0, 9, 8, 0, 0, 0, 0, 6, 0 8, 0, 0, 0, 6, 0, 0, 0, 3 4, 0, 0, 8, 0, 3, 0, 0, 1 7, 0, 0, 0, 2, 0, 0, 0, 6 0, 6, 0, 0, 0, 0, 2, 8, 0 0, 0, 0, 4, 1, 9, 0, 0, 5 0, 0, 0, 0, 8, 0, 0, 7, 9 然後我用下面的code將這樣一組資料讀入陣列 Scanner input = new Scanner(System.in).useDelimiter(", |\n"); int[][] grid = new int[9][9]; for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { if(input.hasNextInt()) grid[i][j] = input.nextInt(); System.out.println("TEST!!!!"+" i:"+i+" j:"+j +"grid["+i+"]"+"["+j+"] = "+grid[i][j]); } } 問題來了...當我在netBean底下這樣做沒有問題. 但當我用windows的"命令提示字元" 下達 javac test.java java test < testData 除了第一列的資料有讀進之外,其餘都會變成0.... 請問這是怎麼一回事呢? 找了老半天的資料找不出所以然來. 請java版的前輩們指點指點! p.s. 我知道可以用string的方式讀入一整行再做切割, 但我更想知道上面那樣作法的問題在哪. 所以還麻煩各位幫幫忙了! -- 諸葛亮 :「魯肅,近來可好?」 魯肅 :「安然無恙。」 諸葛亮 :「魯夫人呢?」 魯肅 :「他應該在偉大的航道上。 」 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.233.40.239
tkcn:似乎是 \r 問題? 還有不是都變成 0 ,而是讀到非數字 04/20 21:20
YCK:Orz..我這邊除了第一筆全都是0 04/20 21:30
YCK:有時在第一行資料之後會全為0,有時候第一行讀完之後就會掛掉 04/20 21:32
YCK:掛掉的部份已經修正,其餘用E附加入內文 04/20 21:41
目前找到了可行的方法...code如下: Scanner input = new Scanner(System.in).useDelimiter(", |\n|\r"); int[][] grid = new int[9][9]; for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { if(input.hasNextInt()) grid[i][j] = input.nextInt(); System.out.println("TEST!!!!"+" i:"+i+" j:"+j+" grid["+i+"]"+"["+j+"] = "+grid[i][j]); } if(input.hasNextLine()) input.nextLine(); } 另外想請問: \r:是回到當前行的行首 \n:換行後回到剛行的行首 上面這兩個應該沒錯 那位什麼我還要在Delimiter裡面多加\r呢? 當我讀完第一行的資料 5, 3, 0, 0, 7, 0, 0, 0, 0 6, 0, 0, 1, 9, 5, 0, 0, 0 他不是應該會自動換行到第二行的行首嗎?(以\n作結) 還是說第一行的尾巴並非是以\n作為結束而是以\r? ※ 編輯: YCK 來自: 118.233.40.239 (04/20 21:49)
tkcn:google: "carriage return" & "line feed" 04/20 22:01
謝謝tkcn的提示! 我找到一個看似有用的參考資料 http://tinyurl.com/y2sw3l8 原網址: http://www.maxi-pedia.com/Line+termination+line+feed+versus+carriage+return+0d0a 供以後看到這篇文章的人參考! ※ 編輯: YCK 來自: 118.233.40.239 (04/20 22:11)