我写了一个程序来要求用户输入名称,数字和任何相关的注释。然后,我尝试允许用户搜索任何名称并显示该人员信息。我还希望能够存储和读取电话簿中的文件。我在存储/读取以及识别已创建的单独类时遇到问题。我猜我只是语法错误,因为我仍然是编程新手。感谢您的任何帮助!
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");
-
它是
File
(大写 F)。在 java 中,按照惯例,所有类都以大写字母开头。 -
语句构造不正确。它应该是
-
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;
这样的赋值在方法之外无效,同样没有定义a
、b
和c
。
看起来你对Java很陌生。您可能希望使用像 eclipse 这样的 IDE,以便更好地了解错误和建议的修复,并且可以更快地修复它们。但是,如果您从命令行使用javac
,您将学到更多和更好的知识(我认为您正在这样做)。 当然,你需要做大量的阅读和学习。
PS:这些问题很可能会被否决,因为它表明OP方面缺乏寻找解决方案的努力。我今天碰巧有几分钟,但是当OP似乎没有努力时,没有人有时间研究这种程度的细节。
OP = 原始海报 = 提出问题的人