2016-03-14 110 views
-2

import java.util.Scanner;eclipse錯誤無法對非靜態字段進行靜態引用

public class Account 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(); 
} 

}

+0

使你的變量變爲靜態的,但在你的班級中。但這個問題並不清楚,哪個變量給你錯誤? –

+0

哦大概number1,number2和總和給出錯誤。你是否在另一個班級中定義了他們?或在這(有一個主)類? –

+0

number1,number2和總數 –

回答

0

number1number2sum是實例變量。

它們不會存在,直到該類的實際實例被創建,並且只能通過該類的實例使用它們。

由於每個實例都有適合它們的值,所以編譯器在這一點上不知道任何有關它們的信息。

你要在本地聲明它們在你的主要方法,或爲靜態變量在類:

static int number1; 
static int number2; 
static int sum; 
+0

謝謝你的夥計...它的工作原理 –

0

您不能引用靜態方法非靜態變量,而無需創建對象。代碼中的變量number1, number2 and sum是非靜態的,您在main()中直接引用它們,聲明爲靜態。

如果您的程序不需要多個對象,或者所有對象的值都是相同的,那麼您可以簡單地通過使這些變量成爲靜態來解決問題。

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. 
    

總結:

  • 您需要同時參照靜態方法非靜態字段來創建對象。因爲靜態方法是類方法,不屬於類的特定對象。如果它不是問題,你也可以使變量靜態。
相關問題