Re: [問題] 請問如何輸入二維陣列

看板java作者 (letmein)時間11年前 (2013/06/09 19:15), 編輯推噓7(7019)
留言26則, 7人參與, 最新討論串3/3 (看更多)
※ 引述《PsMonkey (痞子軍團團長)》之銘言: : 版主的功能就是當壞人嗎? [遠目] : ※ 引述《jeeyi345 (letmein)》之銘言: : : 我要模擬Banker's Algorithm : 你就算要模擬 Google 演算法也無所謂 只是大概解釋一下為何需要二維陣列 : : 所以需要用二維陣列計算,我用讀txt檔的方式輸入 : : : 上面這段程式,對於看的人來說有什麼問題呢? : 1. 沒有良好縮排 : 2. 有奇怪的註解混進來了,真正的註解反而沒半個 : 3. 不知道 `input` 是怎麼來的,連是哪個 class 都不知道 : 4. 不知道 TXT 檔內容是啥樣子 public static void main(String[] args) throws Exception { int acin[][]=new int[50][3]; File allocin = new File("D:\\alloc.txt"); //alloc.txt位置;預設為D Scanner input = new Scanner(allocin);//準備讀取alloc.txt while(input.hasNext()){ for(int j=0;j<acin[j].length;j++){ for(int i=0;i<3;i++){ acin[j][i]=input.nextInt(); System.out.print(acin[j][i]); } System.out.println(); } } input.close(); } txt檔內容: 0 1 0 2 0 0 3 0 2 2 1 1 0 0 2 輸出 010 200 302 211 002 Exception in thread "main" java.util.NoSuchElementException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) : : 請問該怎麼解決呢? : 1. 請搞清楚那個不知道是什麼的 input 的 hasNext() / nextInt() 是啥意思 : 2. 請搞清楚你三層迴圈之間的關係,尤其是扯到 1 的部份 : 3. 說不定根本就是你的 TXT 不能滿足 XD 就我看說明理解,hasNext()是當還有值時輸入,nextInt()是輸入int 因為我看錯誤敘述猜測是沒有值,而acin[][]還沒用完產生的錯誤, 想用hasNext() break跳出來解決,但沒辦法 因為寫一維陣列時沒有遇過這個問題,想請教各位高手 這兩次是在這初次發文,請多包含 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.162.95.64

06/09 19:23, , 1F
你一次讀了九個吧?
06/09 19:23, 1F

06/09 20:02, , 2F
輸出看起來都讀了,不明白你的意思耶,不好意思
06/09 20:02, 2F

06/09 20:30, , 3F
for(int j=0;j<acin[j].length;j++) 你不覺得怪怪的嗎?
06/09 20:30, 3F

06/09 20:50, , 4F
本來是acin.length,根據前一篇文章回應中修改的。
06/09 20:50, 4F

06/09 21:05, , 5F
因為你沒有搞懂hasNext()跟NextInt()的差別 你可以想想看
06/09 21:05, 5F

06/09 21:10, , 6F
跟[][]沒用完100%一點關係都沒有 提示:認的對象不同
06/09 21:10, 6F

06/09 21:24, , 7F
我想到條件改hasNextInt()或陣列改String,但錯誤一樣
06/09 21:24, 7F

06/09 21:25, , 8F
版主是在說你的第二個for吧?
06/09 21:25, 8F

06/09 21:28, , 9F
你用3個迴圈去讀二維陣列,你想一下是不是怪怪的?
06/09 21:28, 9F

06/09 21:31, , 10F
1(input.hasNex) < 3*3(acin[j].length*3)個input.next
06/09 21:31, 10F

06/09 21:43, , 11F
直接改acin[5][3]就可以,二維陣列不能多給空間在裁減囉
06/09 21:43, 11F

06/09 21:49, , 12F
一維陣列輸入時我是那麼做的
06/09 21:49, 12F

06/09 21:50, , 13F
回文跟推文已經算給你答案了,其餘得靠你自己努力了
06/09 21:50, 13F

06/09 22:03, , 14F
謝謝各位熱心回復,我再看推文好好想 資質駑鈍啊
06/09 22:03, 14F

06/09 22:11, , 15F
這無關資質,而是凡人必經的過程(我到現在還是常常遇到
06/09 22:11, 15F

06/09 22:18, , 16F
天啊~板主是凡人(大吃一驚!
06/09 22:18, 16F

06/09 22:19, , 17F
==" 樓上都沒看版標嗎? [淚目]
06/09 22:19, 17F

06/09 22:32, , 18F
原來PsMonkey是板主XD初來不識泰山 推文感動到,有動力了
06/09 22:32, 18F

06/09 22:36, , 19F
提示:你的1次while = 跑3次nextInt,檢查的地方要改.
06/09 22:36, 19F

06/09 22:37, , 20F
建議你先學會操作IDE的單步執行來除錯
06/09 22:37, 20F

06/09 22:39, , 21F
改陣列長度可以是因為數量剛好 不要再提陣列了XD
06/09 22:39, 21F

06/09 23:02, , 22F
試出來了\^0^/謝謝謝謝謝謝!要感謝的人太多了,就謝天吧
06/09 23:02, 22F

06/09 23:06, , 23F
感覺各位下筆前都很清楚,不像我錯了明示暗示還看不出來
06/09 23:06, 23F

06/10 21:25, , 24F
你只在最外層檢查hasnext不行,裡面每取值一次都要檢查
06/10 21:25, 24F

06/11 12:10, , 25F
初次看到code的時候還是覺得看FileInputStream可能比較好
06/11 12:10, 25F

06/11 12:12, , 26F
看到檔案內容後我就...噴了....
06/11 12:12, 26F
文章代碼(AID): #1Hj6Flzj (java)
文章代碼(AID): #1Hj6Flzj (java)