2017-06-06 9 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); 


} 
} 

** Amが算術静的変数エラー

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

で問題を持つ誰かが私を助けて、なぜ私はこのエラーが生じています説明できますか?**

+2

'新しいArithmectic(mealCost、tipPercent、taxPercent):それはあなたのmainにユーザー入力を取得し、コンストラクタに渡すために、より理にかなって、言っ

'Arithmetic 'のクラスメンバーがあり、' public static main(String [])'のスコープには存在しないようです。おそらく 'Arithmectic'コンストラクタを再設計して、スキャナで変数を入力しないで、parametr =>クラスのメンバを代入するべきです。別の方法では、実際に入力を読み取って、読み取った値をコンストラクタにパラメータとして渡す必要があります。 – SomeJavaGuy

答えて

0

あなたmainは内にある場合そのクラスのコンストラクタに渡すために、そのクラスのインスタンス変数にアクセスしようとしている同じクラス(つまり、Arithmectic)です。

これは意味がなく、とにかく実行できません(静的コンテキストからインスタンス変数にアクセスすることはできません)。

コンストラクタがユーザー入力からメンバを初期化する場合、外部からこれらのパラメータを取得する必要はありません。 ; `これらの変数はyou're

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); 
}