更新
解决了以下错误,但是在输入作者后,我会看到以下消息:
”
Exception in thread "main" java.lang.NullPointerException
at manualLibrary.Library.add(Library.java:21)
at manualLibrary.Menu.main(Menu.java:25)
”
有什么原因会发生这种情况吗?
我是java的新手,已被分配了一些任务,如下所示:
我一直在完成这些任务,并且快要结束了,但是我认为我的Menu类存在错误,因此无法运行。这是我正在使用的4个不同的类:
手工课:
http://pastebin.com/z31QBKf9
控制台类:
http://pastebin.com/B4XFZESF
图书馆课:
http://pastebin.com/Gx25iDwA
菜单类别:
package manualLibrary;
public class Menu
{
public static void main(String[] args)
{
// Initialise container
//Manuals manuals = new Manuals();
Library manuals = new Library();
// declare boolean for while loop
boolean finished = false;
char option;
// while loop
while(! finished)
{
// ask option using menu choices
option = Console.askOption("Select: A)dd, P)rint, Q)uit");
// implement switch option
switch (option)
{
// implement cases
// add
case 'A':
Manual one = new Manual();
one.ask("Enter manual details: ");
manuals.addManual(one);
break;
// find
case 'F':
manual = new Manual();
String manualserialNumber = manual.askserialNumber("\nEnter the serial number for the manual: ");
if ( manuals.find( manualserialNumber) != null)
System.out.println("Manual found is: " +manuals.find(manualserialNumber));
else
System.out.println("Error: Manual not found! \n");
break;
// print
case 'P':
manuals.print("Stored manuals are: ");
break;
// quit menu case
case 'Q':
finished = true;
System.out.println("End of application, goodbye!");
break;
// default case
case '\0':
break;
default:
System.out.println("Invalid entry!");
}
}
}
}
如果有人对如何解决存在的错误有任何想法,请提供帮助,我一直在努力工作,并且希望使我的代码正常运行。
编辑
以下是Eclipse引发的错误:
”
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The method askOption(String) is undefined for the type Console
The method ask() in the type Manual is not applicable for the arguments (String)
The method addManual(Manual) is undefined for the type Library
manual cannot be resolved to a variable
manual cannot be resolved
at manualLibrary.Menu.main(Menu.java:17)
”
谢谢!
最佳答案
该错误是不言自明的,但是如果您听不懂,就可以...
1.)您尝试使用Console.askOption()
参数调用方法String
,但是不存在这样的方法-您需要对其进行定义。但是,您似乎想要Console.askChar()
。
2.)您尝试在ask()
实例上使用String
参数调用方法Manual
,但是定义的方法没有参数。请改用普通的one.ask();
,或者看起来像您想要的one.print("Enter manual details: ");
。
3)您尝试在manual
下分配未声明的变量case 'F':
,它可能应该是Manual manual = new Manual();
而不是manual = new Manual();
。
4.)您尝试在addManual()
实例上使用Manual
参数调用方法Library
(不存在这样的方法)-看起来像您想要的manuals.add(one);
5.)您尝试在print
实例上使用String
参数调用方法Library
(不存在这种方法)-看起来像您想要的manuals.print();
我想就是这样。