2017-03-28 10 views
-1

私はJavaで以下のクラスがあります。クラスをdouble型javaとして定義することは可能ですか?

public class Percentage 
{ 

    private double n; 

    Percentage (double n) 
    { 
     this.n=n; 
    } 

    public void setN() 
    { 
     this.n=n; 
    } 

    public double getN() 
    { 
     return n; 
    } 

    public double percntage() 
    { 
     return this.n/100; 
    } 
} 

このクラスの割合は、double値を返しますが、問題は、我々は以下のような値を持つ任意の数学的操作をすることはできませんです。

public static void main (String args[]) 
{ 
    Percentage p = new Percentage(5); 
    double b=1; 
    b=p*12; // this is error because the class Percentage in not of type double 
} 

多分倍数のパーセントを作るためにあるのですか?

+1

あなたを使用getter getN() –

+2

いいえ、 '*'は数値型に対してのみ実行できます。 'p.percntage()'や 'p.getN()'(あなたが望むものに応じて)を呼び出すことによって、 'p 'がどのような値を保持しているかを' p 'に問い合わせるだけです。そのメソッドは 'double'を返すので、あなたの計算にその結果を使用します。 – Pshemo

+0

'setN'で間違ったコードを修正しました。 –

答えて

3

Percentageオブジェクトにdouble値を掛けているため、これはエラーです。 代替は、あなたがクラス型doubleを作ることができない

public static void main (String args[]) 
{ 
    Percentage p = new Percentage(5); 
    double b=1; 
    b=p.getN()*12; 
} 
+0

素敵な答えですが、私の質問は、倍率のような振る舞いをするオブジェクトとして直接パーセンテージを使用することができ、私たちが理解できない場合でした。 –

+0

あなたの質問は全く意味がありません。クラスは複数のフィールドとメソッドを持つことができるので、フィールドを取得せずにクラスのオブジェクトを掛けることはできません。 –

+0

@SaiedTrefi [クラスとは何ですか?](http://www.wideskills.com/java-tutorial/java-classes-and-objects) –

1

です。代わりにn値で操作を実行できます。

b = p.getN()*12; 
1

doubleはプリミティブ型なので、クラスをdoubleとして定義することはできません。あなたができることは、他のユーザーが提案したことです:

p.getN(); 

これは、必要な倍の値を返します。

1

いいえ、doubleのように動作させることはできませんが(BigDecimalなど)、関連する操作を実行するためのメソッドを提供できます。

あなたのコードがn = 1010%を意味することを意味すると思われますので、0.10の要因、すなわち、あなたはこれらのような方法で作ることができます:

public double of(double value) { 
    return value * this.n/100d; 
} 

public double add(double value) { 
    return value * (100d + this.n))/100d; 
} 

をし、このようにそれを使用します。

Percentage p = new Percentage(10); 
double input = 55; 
double d1 = p.of(input); // 10% of 55 = 5.5 
double d2 = p.add(input); // 55 + 10% = 60.5 
+0

オブジェクトをdoubleのように動作させることはできません。あなたのソリューションは、大丈夫だと思われる –

関連する問題