Re: [問題] 讀取的資料比對

看板java作者 (Leo)時間15年前 (2008/11/14 01:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/6 (看更多)
※ 引述《loadball (~@TimeDriver@~)》之銘言: : 最近寫一個程式 : 碰上了一些小問題 : 希望前輩們幫解答一下 : 我要讀取一個TXT檔 : 檔內有一些數據 : 例如: : 925001 : 682533 : 925001 : 123456 : 4組數據 : 我已經能做到讀取開檔的動作 : 但是這4組數字要比對呢? : 我要做的功能是數列的比對 : 例如: : 925001或先讀到然後跟682533比對 : 假如不是相同的數列則繼續跟下一個925001比對 : 因為兩個數列重複出現,會跳出一個類似警告視窗之類的 : 我有想過將讀到的東西先存入陣列內再讓她們去比對 : 但並不太了解將讀到的資料寫入陣列內這一步要怎麼寫呢? : 還有就是還有其它比較好的寫法來比對這些數列嗎? : 最直接的想法是我上面講的一個一個比 沒錯,確實是一個一個比較... (我是採用跟「選擇排序」同樣的方法來比較數字... 算是比較直接方式...當然還有其他方法) 首先用loadFile 讀取文字檔,然後將她存成ArrayList<Integer>, 然後將ArrayList轉存成int[],接著用迴圈檢查,將檢查結果傳回boolean值, 最輸出驗證結果。 程式碼大概的過程就這樣...希望對你有所幫助... ^ ^ (其實只要用ArrayList或int[]陣列其中一個就行了...不需要轉換那麼多次...) import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class CheckDoubleNumber { /** 檢查是否有出現重複的數字 */ public boolean checkIfDouble(int num[]) { for (int i=0;i<num.length;i++) { for (int j=i+1;j<(num.length);j++) { System.out.println(num[i] + "," + num[j]); if (num[i] == num[j]) { return true; } } } return false; } /** 讀取檔案 */ public List<Integer> loadFile(String fileName) { List <Integer> Arrays = new ArrayList <Integer>(); Scanner reader; try { reader = new Scanner(new File(fileName)); while (reader.hasNextInt()) { int n = reader.nextInt(); Arrays.add(n); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return Arrays; } /** 將 List 轉換成 int[] */ public int[] ListToArrays(List<Integer> list) { int num[] = new int[list.size()]; for (int i=0;i<list.size();i++){ num[i] = (Integer)list.get(i); } return num; } /** 輸出驗證結果 */ public void PrintResult(boolean isNumberDoubles) { if (isNumberDoubles) { System.out.println("數字有重複"); } else { System.out.println("每組數字皆是唯一"); } } public static void main(String[] args) { CheckDoubleNumber compare = new CheckDoubleNumber(); List<Integer> numList = compare.loadFile("Numbers.txt"); int num[] = compare.ListToArrays(numList); boolean result = compare.checkIfDouble(num); compare.PrintResult(result); } } -------------------------------------------------------------------- <Numbers.txt> 12 123 85 152 37 777 37 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.105.89.152
文章代碼(AID): #1976DQCo (java)
討論串 (同標題文章)
文章代碼(AID): #1976DQCo (java)