更新

解决了以下错误,但是在输入作者后,我会看到以下消息:



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();

我想就是这样。

10-08 07:00