作者tzeng0401 (Leo)
看板java
标题Re: [问题] 读取的资料比对
时间Fri Nov 14 01:26:49 2008
※ 引述《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