现在我正在尝试读取txt文件并使用该数据在arraylist中创建一个数组。 我想阅读两个txt文件并进行比较,但我不明白为什么内部while循环不起作用。
(我使用' count'变量来测试内部while循环,但是当我打印count变量时,它只打印0。)
(我也知道,尝试〜捕捉〜不是很好的解决方案 NullPointerException错误..但我无法找到其他解决方案而不是尝试〜catch~)
import java.io.*;
import java.util.*;
public class Warehouse {
static private String[] eachStockElem = new String[5];
static private String[] eachInputElem = new String[5];
public static void main(String[] args) throws Exception {
Scanner str = new Scanner(new File("a.txt"));
Scanner ip = new Scanner(new File("b.txt"));
PrintStream st_w = new PrintStream("a.txt");
PrintStream tx = new PrintStream("c.txt");
ArrayList<String[]> stockArrayList = new ArrayList<>();
ArrayList<String[]> inputArrayList = new ArrayList<>();
ArrayList<String[]> txArrayList = new ArrayList<>();
String eachTxElem[] = new String[6];
int tx_id=0;
int temp_quantity=0;
int count=0;
try {
while (ip.hasNextLine()) {
eachInputElem = ip.nextLine().split(",");
inputArrayList.add(eachInputElem);
while (str.hasNextLine()) { //this while not working!
eachStockElem = str.nextLine().split(",");
stockArrayList.add(eachStockElem);
count++;
//do comparing operation
break;
}
}
}
catch(NullPointerException e){
System.out.print("");
}
System.out.println(count);
str.close();
ip.close();
tx.close();
}
}
答案 0 :(得分:0)
通过猜测&#34;这个循环不起作用&#34;单词的意思是,我冒着风险发布我认为是你问题的问题。
文档中的PrintStream:
用作此打印流目标的文件的名称。 如果文件存在,那么它将被截断为零大小;除此以外, 将创建一个新文件。输出将写入文件和 是缓冲的。
问题(和答案,&#34;为什么它不起作用&#34;):
Scanner str = new Scanner(new File("a.txt"));
PrintStream st_w = new PrintStream("a.txt"); //Cleans the text file,
// so scanner has no lines to read.
答案 1 :(得分:0)
在这一行,
PrintStream st_w = new PrintStream("a.txt");
程序正在将输出写入同一输入文件中。更改此输出文件的名称并执行测试用例。