带有存储文件的Java电话簿

时间:2014-04-09 00:16:25

标签: java file class

我写了一个程序,要求用户输入名称,数字和相关的任何注释。然后,我试图允许用户搜索任何名称并显示该人员信息。我还希望能够存储和阅读电话簿中的文件。我在存储/读取时遇到问题以及识别创建的单独类。我猜测我只是语法错误,因为我还是编程新手。谢谢你的帮助!

public class Entry {
    public String name, num, notes;
    name = a;
    num = b;
    notes = c;
}

import java.util.*;
import java.io.IOException;

public class Phonebook {

    static int amount;
    static Scanner input = new Scanner(System.in);
    static file f ("FileName");

    public static Entry[] pb = new Entry[200];
    public static void main(String[] args) {
        String ask;
        char letter;

        amount = 0;
        do{
            System.out.println("Enter a command");
            ask = input.nextLine();
            letter = Character.toLowerCase(ask.charAt(0));

            switch (letter) {
            case 'e': System.out.println(add()); break;
            case 'f': System.out.println(find()); break;
            case 'l': System.out.println(list()); break;
            case 'h': System.out.println(help()); break;
            case 'q': System.out.println("Quit"); break;
            default: System.out.println("Not a valid command"); break;
            }
        } while (letter != 'q');

    }
    public static void help() {
        System.out.println("Use e for enter");
        System.out.println("Use f for find");
        System.out.println("Use l for list");
        System.out.println("Use h to see this menu again");
    }
    public static void add() {
        String a, b, c;

        System.out.println("Enter a name: ");
        a = input.nextLine();
        System.out.println("Enter a number: ");
        b = input.nextLine();
        System.out.println("Enter any notes: ");
        c = input.nextLine();
    }
    public static void list() {
        for (int i = 0; i < amount; i++)
            System.out.println(pb[i].name + pb[i].num + pb[i].notes);
    }
    public static void find () {
        String f;
        boolean found;
        found = false;

        System.out.println("Who?");
        f = input.nextLine();

        for (int i = 0; i < amount; i++); {
            if (f.equals((pb[i].name))) {
                System.out.println(pb[i].name + pb[i].num + pb[i].notes);
                found = true;
            } if (!found)
                System.out.println("Not found");
        }
    }
    public static void WritePhoneBook (String f) throws Exception {
        PrintStream p = new PrintStream(f);

        for (int i = 0; i < amount; i++) {
            p.println(pb[i].name + pb[i].num + pb[i].notes);
            p.close();
            System.out.println("Phonebook stored.");
        }
    }
}

我不确定如何显示我收到的错误,但它们是:

  • 文件无法解析为
  • 我无法解决
  • PrintStream无法解析,
  • FileName处的语法错误,
  • 方法printStn类型中的println(boolean)不适用。

1 个答案:

答案 0 :(得分:1)

由于代码甚至没有编译,让我只看一下编译错误(而不是逻辑):

  • static file f ("FileName");

    1. File(大写字母F)。在java中,按照惯例,所有类都以大写字母开头。

    2. 语句未正确构造。它应该是

static File f = "FileName";

或类似的东西。请注意,您还需要import java.io.File

  • System.out.println(add()); ...

方法添加,查找...返回void。意思是,他们没有回报。 System.out.println()不会对任何内容进行操作。

  • PrintStream p = new PrintStream(f);

您尚未导入java.io.PrintStream

  • i无法解析为变量

这是因为;的最后for

 for (int i = 0; i < amount; i++) {  //note: no ; after the )
        if (f.equals((pb[i].name))) {

Entry.java

  • 班级缺乏方法。 name = a;之类的作业在方法外无效,abc也未定义。

看起来你对Java很新。您可能希望使用像eclipse这样的IDE,以便更好地了解错误和推荐的修复,并且可以更快地修复它们。但是,如果您从命令行使用javac(我认为您正在做的事情),您将学到更多知识并学习更好。当然,你需要做很多阅读和学习。

PS: 这些问题很可能会被遗忘,因为它表明OP在寻找解决方案方面缺乏努力。我今天碰巧有几分钟,但是当似乎没有OP的努力时,没有人有时间调查这个细节级别。

OP =原始海报=提出问题的人