2016-04-04 17 views
-2

Bir ödev için, kesirleri kabul edecek bir sınıf yapmam gerekiyordu, ancak programdaki yöntemlere başvurmaya çalıştığımda bu hatayı alıyorum: "Statik olmayan yönteme statik bir başvuru yapılamıyor". Programımın bir kısmı:Java'da statik olmayan bir yönteme statik başvuru nasıl yapılır?

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

    } 

Bu yöntemlere ana yöntemden nasıl erişebilirim? Ayrıca, ekleme yöntemi (kod nasıl görünecek) gibi yöntemleri nasıl arayabilirim?

Herhangi bir yardım için teşekkür ederiz, teşekkürler!

+0

Kodunuzun yazdırılmasını bekliyorsunuz? – shmosel

cevap

0

Statik olmayan bir yöntem, bir sınıfın yöntemi anlamına gelir. Diğer bir deyişle, bu yöntemleri aramak için yeni bir kesir bildirmeniz gerekir. Eklenti yöntemi, bu durumda frac (frac.add) 'de, bir fraksiyon örneğini kullanarak adı nasıl

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

Not: Örneğin.

Statik bir yöntem yalnızca Fraction.add kullanılarak çağrılabilir, ancak statik olmayan bir yöntem, önce sınıfın bir örneğini (yeni Fraction() kullanarak) yapmanızı gerektirir.

+0

Biraz daha spesifik olabileceğinizi düşünüyor musunuz? Çıktı almak için yazmak için tam olarak neye ihtiyacım olduğu gibi: toString yöntemimi kullanarak "kesiriniz 3/4'tür"? –

+0

Evet. İlk önce yeni bir kesir yapın: Kesir frac = yeni Fraksiyon (3, 4); Sonra toString: System.out.println (frac.toString()); – nhouser9

0

Gerçek örnek olmadan toString() örnek yöntemini çağırıyorsunuz. İlk önce Fraction sınıfının nesnesini oluşturmanız ve nesne için toString() yöntemini çağırmanız gerekir.