2016-04-04 8 views
-2

Für eine Zuweisung musste ich eine Klasse erstellen, die Brüche akzeptiert, aber jedes Mal, wenn ich versuche, auf die Methoden im Programm zu verweisen, erhalte ich den Fehler: "Kann keine statische Referenz auf die nicht statische Methode erstellen". Hier ist ein Teil meines Programms:Wie wird eine statische Referenz auf eine nicht statische Methode in Java erstellt?

public class Fraction { 

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

    System.out.println("What is your numerator?"); 
    long num = keyboard.nextInt(); 
    System.out.println("What is your denominator?"); 
    long denom = keyboard.nextInt(); 
    System.out.println("Your current fraction is: " + toString()); 

    keyboard.close(); } 

    private long numerator; 
    private long denominator; 

    public Fraction() { //constructs fraction 0/1 
    numerator = 0; 
    denominator = 1; } 

    public Fraction(long num){ //constructs fraction n/1 
    numerator = num; 
    denominator = 1; } 

    public Fraction(long num, long denom){ //constructs fraction n/d 
    numerator = num; 
    if (denom == 0){ //make sure denom isn't 0 
     throw new ArithmeticException(); } 
    else{ 
     denominator = denom; } 
    setSign(); } 

    public void add(Fraction fraction){ //addition 
    if(fraction.denominator == this.denominator){ 
    this.numerator += fraction.numerator; } 
    else{ 
     this.numerator *= fraction.denominator; 
     this.denominator *= fraction.denominator; 
     long temp = fraction.numerator * this.denominator; 
     this.numerator += temp; } } 

    public String toString(){ //returns fraction as string 
    return (numerator + "/" + denominator); } 

    } 

Wie würde ich diese Methoden von der Hauptmethode zugreifen? Wie würde ich Methoden wie die Additionsmethode aufrufen (wie würde der Code aussehen)?

Jede Hilfe wird sehr geschätzt, danke!

+0

Worauf warten Sie, dass der Code gedruckt wird? – shmosel

Antwort

0

Eine nicht statische Methode bedeutet, dass es sich um eine Methode einer Klasse handelt. Mit anderen Worten, Sie müssen einen neuen Bruch angeben, um diese Methoden aufzurufen. Zum Beispiel:

Fraction frac = new Fraction(2); 
Fraction toAdd = new Fraction(3); 
frac.add(toAdd); 

Hinweis, wie die Add-Methode unter Verwendung eine Instanz einer Fraktion, in diesem Fall frac (frac.add) aufgerufen wird.

Eine statische Methode konnte nur mit Fraction.add aufgerufen werden, aber eine nicht statische Methode erfordert, dass Sie zuerst eine Instanz der Klasse erstellen (mit neuer Fraction()).

+0

Denkst du, du könntest etwas genauer sein? Wie genau müsste ich schreiben, um die Ausgabe zu erhalten sagen: "Ihr Bruch ist 3/4" mit meiner ToString-Methode? –

+0

Ja. Zuerst einen neuen Bruch machen: Fraktion Frac = neue Fraktion (3, 4); Rufen Sie dann toString: System.out.println (frac.toString()) auf; – nhouser9

0

Sie rufen die Instanzmethode toString() ohne tatsächliche Instanz auf. Sie sollten das Objekt der Klasse Fraction zuerst erstellen und die Methode toString() für das Objekt aufrufen.

Verwandte Themen