2017-06-06 63 views
-1
import java.util.*; 
import java.math.*; 

public class Arithmectic { 

    double mealCost; 
    int tipPercent; 
    int taxPercent; 

    public Arithmectic(double inMeal, int inTip, int inTax){ 

    Scanner scan = new Scanner(System.in); 

    inMeal = scan.nextDouble(); 
    mealCost = inMeal; 

    inTip = scan.nextInt(); 
    tipPercent = inTip; 

    inTax = scan.nextInt(); 
    taxPercent = inTax; 

    } 

    public void printValues(){ 

    System.out.println(mealCost); 
    System.out.println(tipPercent); 
    System.out.println(taxPercent); 
    } 

public static void main(String[] args) { 

    Arithmectic rest = new Arithmectic(mealCost, tipPercent, taxPercent); 


} 
} 

**上午有有一個問題算術靜態變量錯誤

Arithmectic rest = new Arithmectic(mealCost, tipPercent, taxPercent); 

有人可以幫我解釋一下爲什麼我有這個錯誤我?**

+2

'新Arithmectic(mealCost,tipPercent,taxPercent);'這些變量you're試圖傳遞'Arithmetic'的類成員,並且好像不存在於'public static main(String [])'範圍內。您應該重新設計'Arithmectic'構造函數,以便不用掃描器輸入變量,而只需指定parametr =>類成員。另一種方法應該實際讀取輸入,並將它讀取的值作爲參數傳遞給構造函數。 – SomeJavaGuy

回答

0

如果您main是在相同的類(即Arithmectic),您試圖訪問該類的實例變量,以便將它們傳遞給該類的構造函數。

它沒有任何意義,無論如何也無法完成(無法從靜態上下文訪問實例變量)。

如果您的構造函數正在初始化用戶輸入的成員,則不需要從外部獲取這些參數。

這就是說,它會更有意義,以獲取用戶輸入您的main並把它傳遞給構造函數:

public Arithmectic(double inMeal, int inTip, int inTax){ 
    mealCost = inMeal; 
    tipPercent = inTip; 
    taxPercent = inTax; 
} 

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 

    double inMeal = scan.nextDouble(); 
    int inTip = scan.nextInt(); 
    int inTax = scan.nextInt(); 
    Arithmectic rest = new Arithmectic(inMeal, inTip, inTax); 
}