添加其他if语句后,程序不再写入文件

时间:2019-04-03 03:08:38

标签: java io command line

我当前正在尝试编写一个程序,该程序读取文件,将行添加到列表中,然后根据特定参数(最短的优先,最长的优先,字母顺序等)对行进行排序,然后将此排序后的版本写入另一个文件。参数和文件由命令行参数指定。

我设法在不添加特定排序类型的选择的情况下使它起作用,但是一旦我添加了选择选项,它便不再使用排序方法。

这是有效的代码:

BufferedReader inputStream = null;
        PrintWriter outputStream = null;
        String inFile = args[0];
        String outFile = args[1];
        List<String> lines = new LinkedList<>();

        try {
            inputStream =
                    new BufferedReader(new FileReader(inFile));
            outputStream=
                    new PrintWriter(new FileWriter(outFile));
            String line;
            while ((line = inputStream.readLine()) != null) {
                lines.add(line);
                Collections.sort(lines, new Comparator<String>() {
                    @Override
                    public int compare(String o1, String o2) {
                        return o2.length() - o1.length();
                    }
                });
            }
            for (int i = 0; i < lines.size() - 1; i++) {
                outputStream.println(lines.get(i));
            }

这是无效的代码:

        BufferedReader inputStream = null;
        PrintWriter outputStream = null;
        String inFile = args[0];
        String outFile = args[1];
        List<String> lines = new LinkedList<>();

        try {
            inputStream =
                    new BufferedReader(new FileReader(inFile));
            outputStream=
                    new PrintWriter(new FileWriter(outFile));
            String line;
            while ((line = inputStream.readLine()) != null) {
                lines.add(line);
                if(args[2] == "LONGESTFIRST") {
                    Collections.sort(lines, new Comparator<String>() {
                        @Override
                        public int compare(String o1, String o2) {
                            return o2.length() - o1.length();
                        }
                    });
                }
            }
            for (int i = 0; i < lines.size(); i++) {
                outputStream.println(lines.get(i));
            }

这些缩进是很奇怪的,但是我保证这不是问题。只是格式化问题。

第一个代码块以最长的正确顺序对行进行排序,然后将其写入文件,但是第二个代码块只是将文本原样粘贴到另一个文件中,而没有对其进行排序。因此看来问题实际上已经到了对其进行排序的行了,但是我不确定。

在此先感谢您的帮助!

此问题被标记为“如何比较Java中的字符串”的重复项,并且该线程肯定没有我当前问题的答案。

0 个答案:

没有答案