看板 NTUE-CS102 關於我們 聯絡資訊
沒事亂寫一下hmmm 這份能看懂大概算不錯(嗄 第二份JAVA作業是字串內數值排序 指定輸入模式 數值,數值....... ,數值 中間可能有非數值穿插,需輸出輸入錯誤 前面廢話一下原始根本作法,後面再來附幾個method各自應用這樣 不算很難....吧(?) 雖然我為了凹個東西多凹掉一小時,結論還是放棄了就是 -- 首先,提供輸入的方法同樣是一個字串讀進String型態 然後你會注意到...中間夾,的關係,不能直接作排序 這個是這次題目的重點...問你怎麼作字串處理 首先,如果用以前C的方式去作,我們需要一個字元陣列... 所以參照了一下api,會得到在String裡頭有一個方法叫 toCharArray() 只要 char[] = string.toCharArray()就能得到字元陣列 有了字元陣列之後要怎麼作? 照著數值一個一個作判斷就好 -- 比方說... 1,20,5,8,6,4,3 是輸入 這些存進字元陣列會變成 陣列索引:0 1 2 3 4 5 6 7 8 9 10 11 該值 :1 , 2 0 , 5 , 8 , 6 4 3 (char) 設立另一個陣列與一個for迴圈從最前頭逐個檢測ASCII code 當遇到數字,就把char轉數字後減48 ﹕ 0的ascii值為48,9則為57 然後存進一個temp裡頭,然後讀取下一個 是數字的話,就temp = temp*10+integer 是,時,就把計算到現在的temp置入陣列、歸零,然後檢查下一個 : ,的ascii值是44 如果不是數字也不是,,那就只要break出去之後輸出輸入錯誤即可 -- 實做一小段範例code作為參考 int index = 0 for (int i=0;i<input.length;i++){ if ((int)input[i] <= 57 || (int)input[i] >= 48) temp = temp*10+(input[i]-57); else if ((int)input == 44){ array[index++] = temp; temp=0; } else{ System.out.print ("input error"); break; } } 大概會像這個樣子作運作 -- 面對要支援負數、小數點 也是同樣的方法,只是更多的判斷去作分別處理即可 當然,這樣的方法略顯原始... 所以可以應用其他method 比方說split()用正規表示式直接把字串拆成陣列 然後就能直接針對每個陣列元素作轉換 利用前面提及的toCharArray另創一個陣列 檢查沒問題就parse成數值陣列也是個作法這樣 -- 所恐懼的,不是沒有知識的大眾  所憎恨的,不是深沉幽暗的人心 而是自以為是的思考之聲 而是自恃甚高的執法者 所毀滅的,不是溫馨和諧的世界 這是我最後的期許,沒有憤怒、沒有悔恨 而是自欺欺人的夢境 只剩下,渾沌的死亡呼吸                節自 新月神話-弒王者 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.128.171
teiikushi:我想問一下,走地圖的地圖,是在程式內設定?? 10/18 16:00
game0416:那倒是無所謂...看你要在哪裡設定地圖都可以 10/18 18:13
game0416:那部份不是主要要測驗的部份 10/18 18:13
game0416:看過課本那段,看能不能對那段演算法有點概念比較重要 10/18 18:15
jerry771210:加油吧 這份要拿及格分數大概寫個10分鐘 10/18 19:36
※ 編輯: game0416 來自: 120.127.47.86 (10/21 10:39)