0
import java.io.*;

class empl
{

    int p, n, r, i;

    void accept()
    {
        try
        {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Enter Principal amount");
            int p = Integer.parseInt(br.readLine());
            System.out.println("Enter no of years");
            int n = Integer.parseInt(br.readLine());
            System.out.println("Enter rate");
            int r = Integer.parseInt(br.readLine());
        } catch(Exception e)
        {
            System.out.println("" + e);
        }
    }

    int calculate()
    {
        i = (p * n * r) / 100;
        return (i);
    }
}

class bank
{
    public static void main(String args[])
    {
        empl e = new empl();
        e.accept();
        int a = e.calculate();
        System.out.println("i=" + a);
    }
}

私はJavaの初心者です.上記のプログラムは常に0として結果を返します.私も多くの異なる入力値を試しましたが、結果は同じままです.式に問題はないと確信しています.助けてください.ありがとう.あらかじめ。

4

5 に答える 5

2
int p=Integer.parseInt(br.readLine()); 
int n=Integer.parseInt(br.readLine()); 
int r=Integer.parseInt(br.readLine());

p、n、r はインスタンス変数です。再度宣言する必要はありませんint p。使うだけp=...

于 2013-10-21T13:34:30.833 に答える
2

p*n*rが より小さい場合100、 で割ると100に切り捨てられます。0これは、 としてキャストするためですint。これを a に変更し、代わりにdouble除算し100.0ます。

int calculate(){
    return (p * n * r) / 100.0;
}
于 2013-10-21T13:34:37.083 に答える
2

あなたの問題は、整数を使用して計算していることです。

i=(p*n*r)/100;

その行は を乗算しpnr100 で割り、小数点以下を捨てて、p*n*r100 を超えない限り 0 を生成します。

ここでの解決策は、またはエラー許容度に応じて、doubleまたはなどの他のデータ型を使用することです。BigDecimal

于 2013-10-21T13:34:46.350 に答える