使用.nextInt()时出错

时间:2013-11-13 07:16:25

标签: java java.util.scanner

我收到此错误:“无法在每次尝试执行包含.nextInt()的代码行时对非静态字段进行静态引用”

以下是可能影响的代码行(我能想到):

private Scanner input = new Scanner(System.in);
int priceLocation = input.nextInt();

3 个答案:

答案 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();
    }
}