0

Java で get set メソッドを使用して、あるクラスから別のクラスに出力値を取得しようとしています。クラス 1 は、結果を として出力し0.0ます。

これはクラス 1 です。

Paper paperone = new Paper();
    float a = paperone.getPercentage(); 
    System.out.println("percentage " + a);

これは 2 番目のクラスにあります。

private float percentage;
    public float getPercentage() {
        return percentage; }
    public void setPercentage(float percentage) {
        this.percentage = percentage; }

これは、私が結果を取得したい場所です:

int total;
total = count+count1+count2;
System.out.println("The total is : ");

setPercentage((total * 100/ 5000));
System.out.println("The percentage for: " + getPercentage() + "%");

読み取られている行のリストからカウント数を取得しています。2 番目のクラスから印刷すると、正しい結果が得られますが、最初のクラスからは得られません。私が間違っていることはありますか?

ありがとうございました。

4

3 に答える 3

0

変数totalは であるintため、この行は整数演算を実行しています。

setPercentage((total * 100/ 5000));

50 未満の値はtotal、100 を掛けると 5000 未満になり、整数を 5000 で除算した結果は 0 になります。

正しい結果を得るには、float としてキャストします。

setPercentage(((float) total * 100/ 5000));
于 2013-03-15T16:05:30.783 に答える
0

ここで新しいオブジェクトを作成したので

Paper paperone = new Paper();

setPercentageこのオブジェクトも呼び出す必要があります。

percentageクラスのすべてのオブジェクトでフィールドを同じにしたい場合はPaper、その宣言を静的に変更します

private static float percentage;
于 2013-03-15T16:07:38.967 に答える
0
Paper paperone = new Paper();
float a = paperone.getPercentage(); 
System.out.println("percentage " + a);

Paperクラスの新しいオブジェクトを作成します。そのfloat percentageフィールドは に初期化され0.0fます。あなたは電話しないsetPercentage()のでpercentageそのまま0.0fです。

ちなみに、のdouble代わりに使用してfloatください。

于 2013-03-15T16:04:23.237 に答える