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


} 
} 

** mit Am ein Problem mitArithmetic-statische Variablen Fehler

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

Kann mir jemand helfen und erklären, warum bin ich diesen Fehler zu haben? **

+2

'neue Arithmectic (mealCost, tipPercent, taxPercent);' diese Variablen du bist Versuche, dort zu bestehen, sind Klassenmitglieder von 'Arithmetic' und existieren nicht im Bereich von' public static main (String []) '. Sie sollten den'Arithmectic'-Konstruktor wahrscheinlich neu entwerfen, um die Variablen nicht mit dem Scanner einzugeben, sondern einfach die parametr => Klassenmitglieder zuweisen. Eine andere Methode sollte die Eingabe tatsächlich lesen und die Werte, die sie als Parameter gelesen hat, an den Konstruktor übergeben. – SomeJavaGuy

Antwort

0

Wenn Ihr main in der ist gleiche Klasse (dh Arithmectic) Sie versuchen, auf die Instanzvariablen dieser Klasse zuzugreifen, um sie an den Konstruktor dieser Klasse zu übergeben.

Es macht keinen Sinn und kann sowieso nicht gemacht werden (Sie können nicht auf Instanzvariablen aus einem statischen Kontext zugreifen).

Wenn Ihr Konstruktor die Mitglieder über Benutzereingaben initialisiert, müssen diese Parameter nicht von außen abgerufen werden.

Das heißt, wäre es sinnvoll, die Benutzereingaben in Ihrem main zu erhalten und es an den Konstruktor:

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