所以我试图将团队的对象存储在ArrayList中但是给我一个&#34的错误;非静态变量存储不能从静态上下文中引用"
尝试并搜索但没有运气:/
接受对我的编码技能的任何批评!努力学习不会害怕批评。
package testing;
import java.util.Scanner;
import java.util.ArrayList;
public class Testing {
/**
* @param args the command line arguments
*/
ArrayList<Team> store = new ArrayList<Team>();
public static void main(String[] args) {
String tourName , tourDate , location;
int maxNumberofTeams , avalSoft, avalHard , avalFieldTest;
Scanner input = new Scanner(System.in);
System.out.print("Please Enter tournament Name?\n");
tourName = input.next();
System.out.print("please Enter tournament Date\n");
tourDate = input.next();
System.out.print("please Enter location\n");
location = input.next();
System.out.print("Please Enter Max number of Teams\n");
maxNumberofTeams = input.nextInt();
System.out.print("Please Enter avalSoft\n");
avalSoft = input.nextInt();
System.out.print("Please enter aval Hard\n");
avalHard = input.nextInt();
System.out.print("Please Enter avalFieldTest\n");
avalFieldTest = input.nextInt();
Tournament tour = new Tournament (tourName , tourDate, location , maxNumberofTeams, avalSoft , avalHard, avalFieldTest);
for (int i = 1 ; i <= maxNumberofTeams ; i++)
{
String teamName , sponsoringSchool , financialSponsor , judgeLocation;
int teamNumber , noOfTeamMem;
System.out.print("Please Enter %s team Name\n");
teamName = input.next();
System.out.print("Number of Team Memebers\n");
noOfTeamMem = input.nextInt();
System.out.print("Please Enter Sponsoring Schoolr\n");
sponsoringSchool = input.next();
System.out.print("Please Enter financialSponsor\n");
financialSponsor = input.next();
System.out.print("Please Enter judge Location\n");
judgeLocation = input.next();
teamNumber = i;
Team team = new Team(teamName , teamNumber , noOfTeamMem , sponsoringSchool , financialSponsor, judgeLocation);
store.add(team);
}
答案 0 :(得分:3)
您正尝试从static
上下文中访问非静态(实例)字段。
在Testing
课程中创建一个方法,将程序的逻辑放在其中。在main
方法中,创建Testing
的实例并调用此方法
public static void main(String[] args) {
Testing testing = new Testing();
testing.makeItSo();
}
public void makeItSo() {
String tourName , tourDate , location;
int maxNumberofTeams , avalSoft, avalHard , avalFieldTest;
Scanner input = new Scanner(System.in);
System.out.print("Please Enter tournament Name?\n");
tourName = input.next();
System.out.print("please Enter tournament Date\n");
tourDate = input.next();
System.out.print("please Enter location\n");
location = input.next();
System.out.print("Please Enter Max number of Teams\n");
maxNumberofTeams = input.nextInt();
System.out.print("Please Enter avalSoft\n");
avalSoft = input.nextInt();
System.out.print("Please enter aval Hard\n");
avalHard = input.nextInt();
System.out.print("Please Enter avalFieldTest\n");
avalFieldTest = input.nextInt();
Tournament tour = new Tournament (tourName , tourDate, location , maxNumberofTeams, avalSoft , avalHard, avalFieldTest);
for (int i = 1 ; i <= maxNumberofTeams ; i++)
{
String teamName , sponsoringSchool , financialSponsor , judgeLocation;
int teamNumber , noOfTeamMem;
System.out.print("Please Enter %s team Name\n");
teamName = input.next();
System.out.print("Number of Team Memebers\n");
noOfTeamMem = input.nextInt();
System.out.print("Please Enter Sponsoring Schoolr\n");
sponsoringSchool = input.next();
System.out.print("Please Enter financialSponsor\n");
financialSponsor = input.next();
System.out.print("Please Enter judge Location\n");
judgeLocation = input.next();
teamNumber = i;
Team team = new Team(teamName , teamNumber , noOfTeamMem , sponsoringSchool , financialSponsor, judgeLocation);
store.add(team);
}
}
有关详细信息,请参阅Understanding Class Members
答案 1 :(得分:1)
您无法从静态上下文访问非静态成员:main()
是一个静态方法,这意味着它是类的一个方法,它只能看到类变量(静态)。
你声明store
的方式 - 它是一个实例成员,意思是它“生活”在一个类的实例中。
有两种方法可以从store
访问main()
:第一种是将其声明为静态,第二种是实例化一个新的类实例并使用它来访问自己的私有副本store
。
答案 2 :(得分:0)
您需要更改
ArrayList store = new ArrayList();
到
static ArrayList store = new ArrayList();
因为main是静态方法,因此内部使用的变量也应该是静态的。