eclipse错误无法对非静态字段进行静态引用

时间:2016-03-14 14:34:12

标签: java

import java.util.Scanner;

公共类帐户{   int number1,number2,sum;

public static void main(String[] args) {
    Scanner input = new Scanner (System.in);
    System.out.println("Enter your first number");
     number1 = input.nextInt();
     System.out.println("Enter your Second number");
     number2 = input.nextInt();
     sum = number1 + number2;
     System.out.println("Your Answer is" + sum);
     input.close();
}

}

2 个答案:

答案 0 :(得分:0)

number1number2以及sum是实例变量。

在创建类的实际实例之前它们不会存在,并且只能通过类的所述实例使用。

由于每个实例都有适当的值,此时编译器对它们一无所知。

您需要在main方法中本地声明它们,或者作为类中的静态变量声明它们:

static int number1;
static int number2;
static int sum;

答案 1 :(得分:0)

如果不创建对象,则无法在静态方法中引用非静态变量。代码中的变量number1, number2 and sum是非静态的,您在main()中直接引用它们,它们被声明为静态。

如果您的程序不需要多个对象,或者number1, number2 and sum的值对于所有对象都是相同的,那么您可以通过使这些变量保持静态来解决问题。

static int number1, number2, sum;

静态意味着什么?

  • 静态变量是类变量,这意味着该类的所有对象只有该变量的一个副本。

如果您希望为每个对象提供类Account的多个对象和变量的不同副本,那么您可以执行以下操作。

  • 步骤1:保持变量原样。不要让它们静止。

  • 步骤2:在引用非静态变量的同时在main()中创建一个对象。

    内部main()

      Account obj=new Account();
      Account obj1=new Account();
      //objects created and each object has a separate copy of the variables
      obj.number1=....;
      obj.number2=………;
      obj1.number1=……;
      //so on.
    

总结:

  • 您需要在引用静态方法中的非静态字段时创建对象。因为静态方法是类方法,并且不属于类的特定对象。如果变量不是问题,您也可以将变量设为静态。