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

无法在主方法内循环时添加到arraylist inside

郝乐心
2023-03-14

我做了一个程序,利用3类,锦标赛,游戏和俱乐部。我在比赛和俱乐部中的方法都很好,但在冠军联赛的主要方法中,我遇到了问题。我有两个ArrayList,一个是with objects club,另一个是with objects game。在我的主要方法中,我使用while循环和切换用例创建了一个菜单,用户可以1-创建俱乐部,2-创建游戏,3-列出结果,4-注册结果。然而,我的所有案例都有相同的问题:不能在静态上下文中访问非静态变量(arraylists)。所以,我不知道如何访问我的ArrayList。无论我在哪里遇到错误,都会有一条评论,但再一次,它们都是一样的,都与ArrayList有关。感谢您的帮助!

在这里留下相关代码,并对我在哪里遇到这个错误进行注释。

public class Championship{


    ArrayList<Club> clubs;
    ArrayList<Game> games;

    public Championship() {
        clubs = new ArrayList();
        games = new ArrayList();
    }
    
    
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int option = -1;
        
        while(option!=0){
            System.out.println("\t1- Create Club");
            System.out.println("\t2- Create game");
            System.out.println("\t3- List results");
            System.out.println("\t4- Register result by index");
            option = sc.nextInt();
            switch( opçao ){
                case 1:
                    System.out.println("Insert club name.");
                    String n = sc.nextLine();
                    sc.nextLine();
                    System.out.println("Insert club city.");
                    String c = sc.nextLine();
                    sc.nextLine();
                    clubs.add(new Club(n, c)); //ERROR: non static clubs cannot be referenced here in static context
                    break;
                case 2:
                    Iterator<Club> iter = clubs.iterator(); //ERROR: non static clubs cannot be referenced here in static context
                    while(iter.hasNext()){
                        Club a = iter.next();
                        Club b = iter.next();
                        if(a != b){
                           games.add(new Game(a, b)); //ERROR: non static games cannot be referenced here in static context
                        }
                    }
                    break;
                case 3:
                    for(Game game : games){  //ERROR: non static clubs cannot be referenced here in static context
                        System.out.println(game.getM() + " : " + game.getN());
                    }
                case 4:
                    System.out.println("Game index");
                    int s = sc.nextInt();
                    sc.nextInt();
                    System.out.println("Goals visited?");
                    int N = sc.nextInt();
                    sc.nextInt();
                    System.out.println("Goals Visitor?");
                    int M = sc.nextInt();
                    sc.nextInt();
                    
                    Iterator<Game> iter2 = games.iterator(); //ERROR: non static clubs cannot be referenced here in static context
                    while(iter2.hasNext()){
                        Game j = games.get(s); //ERROR: non static clubs cannot be referenced here in static context
                        j.setResult(N,M);
                        
                }
                    break;
            }
        }
        
public class Club {
    private String name;
    private String city;

    public Clube(String name, String city) {
        this.name = name;
        this.city = city;
    }

    public String getCity() {
        return city;
    }

    public String getName() {
        return name;
    }
}

public class Game{
    private Clube visited;
    private Clube visitor;
    private int N;
    private int M;

    public Game(Club visited, Club visitor) {
        this.visited= visited;
        this.visitor= visitor;
    }


    public void setResult(int N, int M) {
        this.N = N;
        this.M = M;
    }

    public int getM() {
        return M;
    }

    public int getN() {
        return N;
    }

共有1个答案

苏雅珺
2023-03-14

从@实验单元1998X修复

     public void Run(){
        Scanner sc = new Scanner(System.in);
        int option = -1;
        
        while(option!=0){
            System.out.println("\t1- Create Club");
            System.out.println("\t2- Create game");
            System.out.println("\t3- List results");
            System.out.println("\t4- Register result by index");
            option = sc.nextInt();
            switch( opçao ){
                case 1:
                    System.out.println("Insert club name.");
                    String n = sc.nextLine();
                    sc.nextLine();
                    System.out.println("Insert club city.");
                    String c = sc.nextLine();
                    sc.nextLine();
                    clubs.add(new Club(n, c)); 
                    break;
                case 2:
                    Iterator<Club> iter = clubs.iterator(); 
                    while(iter.hasNext()){
                        Club a = iter.next();
                        Club b = iter.next();
                        if(a != b){
                           games.add(new Game(a, b)); 
                        }
                    }
                    break;
                case 3:
                    for(Game game : games){  
                        System.out.println(game.getM() + " : " + game.getN());
                    }
                case 4:
                    System.out.println("Game index");
                    int s = sc.nextInt();
                    sc.nextInt();
                    System.out.println("Goals visited?");
                    int N = sc.nextInt();
                    sc.nextInt();
                    System.out.println("Goals Visitor?");
                    int M = sc.nextInt();
                    sc.nextInt();
                    
                    Iterator<Game> iter2 = games.iterator();                     
                      while(iter2.hasNext()){
                        Game j = games.get(s); 
                        j.setResult(N,M);
                        
                }
                    break;
            }
     }
}


public static void main(String[] args) {
    Championship c = new Championship();
    c.Run();
        }
        
 类似资料:
  • 问题:我无法将单击按钮的值添加到ArrayList中。 示例:如果我单击名为E的按钮,那么我希望将E添加到arraylist中,之后如果我单击按钮S,那么它应该添加相同的arraylist。但这并不是在ArrayList中添加任何东西。它只显示当前单击的按钮

  • 当我编译代码的时候 它显示编译时错误无法到达的代码。 但是当我把代码修改成 很好用。 谁能告诉我这种行为背后的原因吗。

  • 我想改变Jupyter内核的路径,将其设置为我在机器中使用的路径。 以下是安装在jupyter中的原始内核: 可用内核: python3/home/n/。local/share/jupyter/kernels/python3 python2/usr/local/share/jupyter/kernels/python2 然后我在我的机器中检查了python3的路径,如下所示: /usr/bin/p

  • 我已经使用Netbeans GUI构建器创建了我的GUI。JList被添加到scrollpane中,如果我硬编码了JList的内容,所有内容都显示得很好。 但是如果我尝试通过动态添加项,则不会出现任何内容。 我只想显示JList中的主题以供视觉使用,其余的都是在后台完成的。

  • 问题内容: 我正在尝试通过数组列表使用foreach循环,但是当我使用它时,它会给我带来错误,但是当我使用正常的for循环时,它可以正常工作,这可能是什么问题? 代码在这里: 这是无效的循环,这是有效的循环: 使用foreach循环时出现的错误是: 问题答案: 终使用Immutable集合类并构建新的集合类,而不要尝试修改单个共享类,但我想使其更加明确。 Guava很好地支持这一点,用于传递数据。

  • 问题内容: 我一生无法理解为什么我无法在while循环之外阅读postPrioity。我尝试过“ export postPrioity =“ 500””仍然无法正常工作。 有任何想法吗? -或在计划文字中- 输出:(我在files.txt中只有3个文件名) 问题答案: 管道操作员创建一个子外壳,请参阅BashPitfalls和BashFAQ。解决方案:不要使用,反正毫无用处。