如何读取文本文件的第一个元素,如果它匹配,读取该行的其余部分?

时间:2015-04-17 11:35:05

标签: java text

我试图检查文本文件是否包含" Circle"或" Square"如果是这样的话,请阅读其余部分。我尝试过使用scan.next()=="Circle",但这似乎不起作用。 编辑:数字指的是x和y坐标,它们将被实现到一个类的实例中。在这种情况下,Square和Circle。

文字档案:

Circle 50 60 40 50 50
Square 250 260 45 -50 -50

3 个答案:

答案 0 :(得分:0)

如果您正在阅读文本文件,请尝试使用BufferedReader然后使用readLine然后使用.equals()而不是==

一个例子:

BufferedReader reader = new BufferedReader(new FileReader(myTextFile));
String lineOne = reader.readLine();
if(lineOne.equals("circle"))
{
  //do something
}

答案 1 :(得分:0)

在Java中,“==”运算符用于比较2个对象。它检查对象是否引用内存中的相同位置。换句话说,它检查2个对象名称是否基本上是对同一内存位置的引用。 所以你应该使用equals。但在您的情况下,如果一行以圆或方形开头,则必须从给定文件中读取该行。

您是否可以使用以下条件并检查它是否适用于扫描仪本身?

    String line = sc.next();
    if (line.startsWith("Circle") || line.startsWith("Square")){
        //Your logic
    }

答案 2 :(得分:0)

试试这个:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class FileReader {

    public FileReader() {
        Scanner scanner;
        List<String> list;
        try {
            list = new ArrayList<>();
            scanner = new Scanner(new File("file.txt"));
            while (scanner.hasNextLine()) {
                String s = scanner.nextLine();
                if (!s.startsWith("Circle") && !s.startsWith("Square")) {
                    break;
                }
                System.out.println(s);
                list.add(s);
            }
            scanner.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        new FileReader();

    }

该文件名为file.txt:

Circle 50 60 40 50 50
Square 250 260 45 -50 -50
False 50 60 40 50 50

如果您比较字符串,请始终使用equals而不是==。检查this