我做了一个程序,利用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;
}
从@实验单元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。解决方案:不要使用,反正毫无用处。