当前位置: 首页 > 知识库问答 >
问题:

无法从相关类调用必需的方法

秦跃
2023-03-14

我有一个任务,在那里我需要为“TotalCompetities”创建一个程序,它由多个“Competition”组成。我需要创建一个应用程序,允许用户做各种选项,与TotalCompetition相关。

如果选择了第一个选项(“创建一个新的竞争”),通过键入“1”然后按Enter,程序应该调用TotalCompetities类的addNewCompetition方法以添加一个具有给定名称的新竞争。创建新的比赛后,程序应该回到主菜单。

此刻,这是我的代码:

public class TotalCompetitions {
    private ArrayList<Competition> competitions;

    
    public TotalCompetitions() {
        this.competitions = new ArrayList<Competition>();

    }

    public ArrayList<Competition> getCompetitions() {
        return competitions;
    }

    public void setCompetitions(ArrayList<Competition> competitions) {
        this.competitions = competitions;
    }

    
    public Competition addNewCompetition(String name, int id) {
        Competition newCompetition = new Competition(name, id);
        return newCompetition;
    }
}
  public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        TotalCompetitions sc = new TotalCompetitions();
        int competitionId = 0;

        while (true) {
            System.out.println("Please select an option. Type 5 to exit.");
            System.out.println("1. Create a new competition");
            System.out.println("2. Add new entries");
            System.out.println("3. Draw winners");
            System.out.println("4. Get a summary report");
            System.out.println("5. Exit");
            
            String command = keyboard.next();
            
            
            if (command.equals("1")) {
                    keyboard.nextLine();
                    System.out.println("Competition name:");
                    String name = keyboard.nextLine();
                    competitionId += 1;
                    sc.addNewCompetition(name, competitionId);
                    System.out.println("A new competition has been created!");
                    System.out.println("Competition ID: " + competitionId + ", Competition Name: " + name);
            }
            else if (command.equals("2")) {
                    sc.addEntry();
            }
            else if (command.equals("5")) {
                    System.out.println("The end");
                    break;
            }
}

共有1个答案

田琛
2023-03-14

sc.addNewCompetition(name,competitionId);返回类型为Competition的新对象,但是,您的程序不使用此新对象。变量sc仍然属于totalcompetity类型,该类型与competity不相关。此外,您的方法addNewCompetition(String id,int id)不会将新对象添加到ArrayList中。解决方案是存储sc.AddNewCompetity(...)调用返回的对象,并在此对象上调用AddEntry()

 类似资料:
  • 我有一个类,其中有一些静态方法和一些非静态方法,所以当我试图从静态方法访问非静态方法时,我会遇到一个著名的错误。每当我搜索这个论坛,我得到的解决方案,当有两个类,从一个你试图达到另一个。我的问题是,如果它们在同一个类中,如何从静态方法调用非静态方法? 我试着用 但是我的方法包含发送Intent和finish(),所以如果我创建的对象不是finish,就不起作用。

  • 开始使用JNI从C调用静态java方法。具体来说,在获得一个jclass(使用FindClass)和一个jmethodID(使用GetStaticMethodID)之后,我继续调用一系列CallStatic*MethodA例程。事实证明,所有这些例程都将jclass作为第一个参数。我开始想为什么需要类对象:因为所有信息都是在GetStaticMethodID中提供的,所以JVM似乎不需要类对象来完

  • 我刚开始学Java。下面是我尝试在Intellij上运行的代码。我没想到下面的代码在执行时会有问题,因为我复制和粘贴的代码100%相似。从学习材料中可以看出,它应该工作得很顺利。我想知道这里出了什么问题?谢谢,我希望有人能向我澄清。

  • 我仍然是Java的新手,我正在努力使这个程序适合我的任务。 问题是: 杰夫在你家附近经营着一家当地的零售店。他已与您签订合同,让您创建一个交互式应用程序,以帮助他增加员工工资。创建一个名为 Details 的类,该类将包含员工 ID 号、名字、姓氏和薪水的获取和设置方法。包括一个名为getUpdateSalary()的方法,该方法将使员工的薪水增加10%。在您的主类中,包括一个名为 () 的静态方

  • 我在这个上面有点卡住了。我正在编写一个包含两个类的java程序,然后是一个测试程序来测试类中的方法。我被困在主方法中调用下面的两个方法上。所有的类文件(测试程序类和另外两个类)都在编译,IDE没有给我任何错误消息,计算只是没有发生…… --主要方法代码: -账户类别代码: 注意:平衡设置器正在工作,因为它在测试程序的前面被调用... 非常感谢任何帮助!!! 账户类别的完整代码: 主要方法完整代码: