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.我也尝试了很多不同的输入值,但结果保持不变.我确信公式中没有问题.请帮帮我.谢谢提前.
您的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是适用于金融计算搜索上的问题.double而BigDecimal对于有关更多信息.)
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |