【发布时间】:2022-01-20 08:01:05
【问题描述】:
我目前正在编写一个从 .txt 文件创建 ArrayList 的算法,并使用循环检查它是否存在重复项(其中循环应如下所示: 第一行写入新的 .txt & boolean found 设置为 true,因为字符串已经找到。 第 2 行写入新的 .txt 等。 但如果两个字符串相同,则应忽略重复的字符串,即第二个字符串并继续下一个)。
public class test {
public static void main(String[] args) throws IOException {
String suche = "88 BETRAG-MINUS VALUE 'M'.";
String suche2 = "88 BETRAG-PLUS VALUE 'P'";
boolean gefunden = false;
File neueDatei = new File("C:\\Dev\\xx.txt");
if (neueDatei.createNewFile()) {
System.out.println("Datei wurde erstellt");
}
if (gefunden == false) {
dateiEinlesen(null, gefunden);
ArrayList<String> arr = null;
inNeueDateischreiben(neueDatei, gefunden, arr, suche, suche2);
}
}
public static void dateiEinlesen(File neueDatei, boolean gefunden) {
BufferedReader reader;
String zeile = null;
try {
reader = new BufferedReader(new FileReader("C:\\Dev\\Test.txt"));
zeile = reader.readLine();
ArrayList<String[]> arr = new ArrayList<String[]>();
while (zeile != null) {
arr.add(zeile.split(" "));
zeile = reader.readLine();
}
System.out.println(arr);
} catch (IOException e) {
System.err.println("Error2 :" + e);
}
}
public static void inNeueDateischreiben(File neueDatei, boolean gefunden, ArrayList<String> arr, String suche2,
String suche22) throws IOException {
FileWriter writer = new FileWriter(suche22);
String lastValue = null;
for (Iterator<String> i = arr.iterator(); i.hasNext();) {
String currentValue = i.next();
if (lastValue != null && currentValue.equals(lastValue)) {
i.remove();
{
writer.write(suche2.toString());
gefunden = true;
}
}
writer.close();
}
}
}
【问题讨论】:
-
你的问题是什么?
-
我知道我的代码错了,但我不知道哪里错了。
-
dateiEinlesen()应该返回ArrayList,然后将其传递给inNeueDateischreiben()方法。目前,您不返回/传递信息。您目前仅在您的dateiEinlesen()中打印arr。 -
你现在很可能得到
NullPointerException,因为你将null传递给inNeueDateiSchreiben()。但是关于正在发生的事情的信息是你应该提供的,而不是指望人们弄清楚。 -
你怎么知道是错的?你收到错误信息了吗?有没有意外的输出?我现在已经问了你四个问题,而你还没有只问一个...:/
标签: java algorithm duplicates