2016-04-04 15 views
-2

割り当てには、分数を受け入れるクラスを作成する必要がありましたが、プログラムのメソッドを参照しようとするたびに、「非静的メソッドへの静的参照を作成できません」というエラーが表示されます。私のプログラムの一部です:Javaで非静的メソッドへの静的参照を作成する方法は?

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

    } 

メインメソッドからこれらのメソッドにアクセスする方法はありますか?また、どうすれば加算法のようなメソッドを呼び出すことができますか(コードはどのように見えますか)?

ご協力いただきありがとうございます!

+0

コードを印刷するにはどうしますか? – shmosel

答えて

0

非静的メソッドは、クラスのメソッドであることを意味します。つまり、これらのメソッドを呼び出すために新しい分数を宣言する必要があります。 Addメソッドは、この場合、FRAC(frac.add)において、画分のインスタンスを使用することによって呼び出される方法

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

注:例えば。

Fraction.addを使用して静的メソッドを呼び出すことはできますが、非静的メソッドでは、最初に(Fraction()を使用して)クラスのインスタンスを作成する必要があります。

+0

あなたはもう少し具体的になると思いますか?出力を得るために書くためには、私のtoStringメソッドを使って "あなたの分数は3/4です"と正確に何が必要なのでしょうか? –

+0

はい。最初に新しい分数を作成します:分数frac =新しい分数(3,4);次に、toString:System.out.println(frac.toString())を呼び出します。 – nhouser9

0

実際のインスタンスなしでtoString()インスタンスメソッドを呼び出しています。最初にクラスFractionのオブジェクトを作成し、そのオブジェクトに対してメソッドtoString()を呼び出す必要があります。

関連する問題