为什么这个java嵌套while循环不起作用?

时间:2018-04-21 17:14:01

标签: java while-loop

现在我正在尝试读取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();
    }
}

2 个答案:

答案 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");

程序正在将输出写入同一输入文件中。更改此输出文件的名称并执行测试用例。