0

我是新来的,所以如果我违反了某种规则,我很抱歉。

无论如何,我目前正在学习 Java 课程,我们被分配了这个项目。该项目的重点是使用继承来编写这个程序。我的意思是制作一个“电话目录”,用户可以在其中使用扫描仪扫描文件并使用方法来执行某些任务。我的教授将这些列为我的课程的要求......该课程需要:

  • 显示整个目录
  • 使用您编写的二进制搜索 Java 方法,您可以使用您在类中编写的方法来显示特定条目的内容
  • 删除现有条目
  • 在目录中插入一个条目,保持排序顺序
  • 将整个目录保存到文件

我认为使用 arraylist 将是最有效的方法。

这是我用来扫描文本文件的代码:

private Scanner fileIn;
private ArrayList<String> directory = new ArrayList<String>();

public void scanFile() {
    try {
        Scanner fileIn = new Scanner(new File("directory.txt"));
    } catch (FileNotFoundException e) {
        System.out.println("Please make sure the directory file is actually there.");
    }
}

这似乎工作正常。我忘了提及这一点,但我们可以在目录测试器文件中使用我们认为必要的任何格式 - 这是我在测试器文件中遵循的格式:

cat,alex,200 meowtown lane,trumbull,ct,06117,3005729384/

我计划在末尾使用 / 作为某种分隔符来告诉 Java “嘿,这是一个完整的对象!”

这对我来说有点棘手。要为这个程序做我需要做的所有事情,我需要将它全部扫描到我创建的目录数组列表中。我找不到有效的方法来做到这一点。

我希望能够(按行)扫描每个对象,这意味着每个人都会有自己的行。在每一行中,我需要能够从行中挑选出一些数据。例如,我想在一行中操作邮政编码,所以我应该能够以某种方式将其挑选出来。

我考虑过制作第二台扫描仪来执行此操作,但老实说,我不知道该怎么做。

谢谢你。

4

3 回答 3

0

最简单的split方法是在,.

假设您为每个条目放置一行,则无需担心/,因为这会给您分隔。

于 2013-10-23T01:01:33.540 回答
0

你应该使用nextLine()

举个例子:

ArrayList<String> list = new ArrayList<>();

Scanner inFile = new Scanner(file);

while (inFile.hasNextLine()) {
    String line = inFile.nextLine();
    list.add(line);
}
于 2013-10-23T01:05:39.630 回答
0

首先,创建一个Class代表条目的基本概念的一个,例如...

public class DirectoryEntry {
    // Add fields and methods as required
    // Provide a simple constructor that will allow you to supply
    // the basic values for the available fields...
}

接下来,将directory.txt文件中的每个条目放在它自己的行上,这将允许您简单地使用Scanner#hasNextLineScanner#nextLine读取文件。

读取文件,解析每一行,以便您可以将其拆分为单独的字段元素,创建一个新实例DirectoryEntry并将其添加到某种类型java.util.List,例如

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

public class TestFileScanner {

    public static void main(String[] args) {
        Scanner fileIn = null;
        List<DirectoryEntry> enrties = new ArrayList<>(25);
        try {
            fileIn = new Scanner(new File("directory.txt"));
            while (fileIn.hasNextLine()) {
                String line = fileIn.nextLine();
                // Parse the individual line elements...
                DirectoryEntry de = new DirectoryEntry(...);
                enrties.add(de);
            }
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        }
    }

}
于 2013-10-23T01:06:40.673 回答