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.我也尝试了很多不同的输入值但结果保持不变。我确信公式中没有问题。请帮帮我out.Thanks提前。
答案 0 :(得分:9)
您的accept
方法为p
,n
和r
声明了新的本地变量 - 它并没有为实例变量,仍然具有值0.而不是声明局部变量,您应该只为实例变量赋值。例如,这一行:
int p = Integer.parseInt(br.readLine());
应该是:
p = Integer.parseInt(br.readLine());
另外,正如其他人所指出的那样,算术完全在整数数学中执行。如果你真的想要一个整数结果,那就无所谓了(例如,如果你不想在p
,n
和{r
时{0} {1}}都是10) - 但如果你想得到非整数结果,你可能需要这样的东西:
double calculate() {
return (p * n * r) / 100.0;
}
...或者使用BigDecimal
代替,如果确切的数字值对您很重要。 (double
适用于自然数量,例如身高和体重; BigDecimal
适用于财务计算。请在double
和BigDecimal
上搜索有关此问题的详细信息。)
答案 1 :(得分: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=...
答案 2 :(得分:2)
如果产品p*n*r
小于100
,则将其除以100
将截断为0
,因为您将其转换为int
。将其更改为double
并改为100.0
。
int calculate(){
return (p * n * r) / 100.0;
}
答案 3 :(得分:2)
您的问题是您使用整数进行计算。
i=(p*n*r)/100;
该行将乘以p
,n
和r
,除以100,然后丢弃小数点后的内容,除非p*n*r
超过100,否则为0
此处的解决方案是使用其他一些数据类型,例如double
或BigDecimal
,具体取决于您具有的容错能力。
答案 4 :(得分:1)
编辑计算方法,
double calculate() {
return ((double)(p*n*r)/(double)100;
}