答案总是0

Adi*_*kar 0 java

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我是java的初学者.上面的程序总是给我结果为0.我也尝试了很多不同的输入值,但结果保持不变.我确信公式中没有问题.请帮帮我.谢谢提前.

Jon*_*eet 9

您的accept方法声明了新的局部变量p,n并且r- 它没有为实例变量赋值,它仍然具有值0.而不是声明局部变量,您应该只为实例变量赋值.例如,这一行:

int p = Integer.parseInt(br.readLine());
Run Code Online (Sandbox Code Playgroud)

应该:

p = Integer.parseInt(br.readLine());
Run Code Online (Sandbox Code Playgroud)

此外,正如其他人所指出的那样,算术完全在整数数学中执行.如果你真的想要一个整数结果并不重要(例如,如果你不介意在结果时得到0 p,n并且r都是10) - 但是如果你想得到非整数结果,你可能想要就像是:

double calculate() {
    return (p * n * r) / 100.0; 
}
Run Code Online (Sandbox Code Playgroud)

...或者可能使用BigDecimal,如果确切的数字值对您很重要.(double适用于天然的量,如身高和体重,BigDecimal是适用于金融计算搜索上的问题.doubleBigDecimal对于有关更多信息.)