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