我收到此错误:“无法在每次尝试执行包含.nextInt()
的代码行时对非静态字段进行静态引用”。
以下是可能影响的代码行(我能想到):
private Scanner input = new Scanner(System.in);
int priceLocation = input.nextInt();
答案 0 :(得分:2)
这很可能是因为您尝试在静态方法中访问input
,我假设它是main()
方法。像这样的东西
private Scanner input = new Scanner(System.in);
public static void main(String[] args) {
int priceLocation = input.nextInt(); // This is not allowed as input is not static
您需要将input
设为static
,或者将其移至static
(主)方法内。
解决方案1:将input
设为static
。
private static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
int priceLocation = input.nextInt();
解决方案2:将input
移到主要内部(请注意,如果移动到input
内,则无法在任何其他方法中使用main()
,因为它将是本地的。)
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int priceLocation = input.nextInt();
答案 1 :(得分:0)
private Scanner input = new Scanner(System.in); // make this static
如果您在静态方法中访问此内容。你必须使input
静态。
private static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
int priceLocation = input.nextInt();
// without static you will get that error.
}
答案 2 :(得分:0)
这是因为你定义输入的方式
private Scanner input = new Scanner(System.in); // notice private
int priceLocation = input.nextInt();
私有变量在类中定义,类似于
之类的方法class myclass{
private Scanner input = new Scanner(System.in);
void methodname(){
int priceLocation = input.nextInt();
}
}
或者,如果您想在方法
中定义输入class myclass{
void methodname(){
Scanner input = new Scanner(System.in); // you can make this a final variable if you want
int priceLocation = input.nextInt();
}
}