文件扫描 - nextLine方法

时间:2017-04-27 09:00:52

标签: java

我的程序有一部分,我遇到了问题。我想要从文件中写下来信。该文件包含一些字母和数字,每个字母和数字都在一个单独的行中。 (我只需要" P"," O"和#34; W"字母)我不明白为什么程序不能输出字母。代码和下面的文件图像。

http://i.imgur.com/sdyGkCn.jpg

File file = new File("file.txt");
        Scanner in;
        try {
            in = new Scanner(file);

            while (in.hasNextLine())
            {
                if(in.nextLine() == "W" || in.nextLine() == "O" || in.nextLine() == "P")
                {
                    System.out.println(in.nextLine());
                }
            }


            in.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

3 个答案:

答案 0 :(得分:1)

您的代码正在跳过检查某些行。每当你打电话给in.nextLine()时,它都会读到第二行。

试试这种方式

File file = new File("file.txt");
    Scanner in;
    try {
        in = new Scanner(file);

        while (in.hasNextLine())
        {
           String MyLine = in.nextLine();
            if(MyLine.equals( "W") || MyLine.equals( "O") || MyLine.equals(  "P"))
            {
                System.out.println(MyLine);
            }
        }


        in.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

答案 1 :(得分:0)

您应该使用string.equals(Object obj)方法来比较字符串。 运算符==只是比较引用,但不检查字符串的实际内容。

在这一行

if(in.nextLine() == "W" || in.nextLine() == "O" || in.nextLine() == "P")

每次都获得新行,你调用in.nextLine()方法

答案 2 :(得分:0)

我修复了你的代码:

    File file = new File("file.txt");
    Scanner in;
    try {
        in = new Scanner(file);

        while (in.hasNextLine()) {
            String tmp = in.nextLine();
            if (tmp.equals("W") || tmp.equals("O") || tmp.equals("P")) {
                System.out.println(tmp);
            }
        }

        in.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

1)。总是使用方法equals方法来比较字符串。

2)。方法nextLine()应该在循环内部使用一次。每次使用此方法都会从文件中读取下一行。