带有存储文件的 Java 电话簿



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

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 类型中的方法 println(boolean) 不适用。

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

  • static file f ("FileName");

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

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

static File f = "FileName";

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

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

方法添加,查找...返回无效。意思是,它们什么也没返回。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 = 原始海报 = 提出问题的人

相关内容

  • 没有找到相关文章

最新更新