此计划旨在找出复利和简单兴趣之间的差异。
当我输入时间为0(零)且代码至少运行一次时,此代码应该终止。当我编译代码时,编译器说:
编译类 - 没有语法错误
但是当我运行代码时,第二个条件"至少运行一次"已经完成并且每件事情都运行良好但是在接受了值之后,如果时间输入为 0 (零)则不会停止 (根据它应该标题),它给了我错误的答案。
示例:
p=3000
r=10
t=2
对于上面的值,输出应该是30.0
,但是当我运行程序时,它会将输出视为-600.0
(一个新的和一个错误的差异)。
import java.io.*;
class p6
{
InputStreamReader i1 =new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(i1);
// calculating the CI and SI
public void calc()throws IOException
{ int p,t,r,si;double a, ci;char k;
do
{
// getting principle
System.out.println("Enter Principle in decimal:");
p = Integer.parseInt(br.readLine());
// getting Rate
System.out.println("Enter Rate in decimal :");
t = Integer.parseInt(br.readLine());
// getting Time
System.out.println("Enter Time :");
r = Integer.parseInt(br.readLine());
//calculating SI
si = (p*t*r)/100;
// calculating amount
a = (double)p*(Math.pow((1+r/100),t));
// calculating CI
ci = a - p;
// printing Difference
System.out.println("Difference between CI and SI = "+(ci-si));
}while(t!=0);//end of DOWhile
}// end of calc
}//end of p6
我使用BlueJ编写并运行我的代码。
我是一名初学者,一年前刚刚开始学习java。
请尽早帮我解决这个问题。
任何帮助表示赞赏,
阿努拉格。
答案 0 :(得分:1)
你正在使用你应该使用双打的整数。
p
,t
,r
和si
是整数。
所以(1+r)/100
就是11/100
(你说r
是10
)。结果,因为这是整数除法,零。因此,你将零提高到任何能力。它仍然是零。
从零减去校长,你得到一个负数。
如果您的变量被声明为double
,那么您可能会得到一个非零结果(0.11),您可以将您的主体乘以。
答案 1 :(得分:0)
你在你的程序中调用时间r并且评价t,不是交换了吗?
不应该是
System.out.println("Enter Rate in decimal :");
r = Integer.parseInt(br.readLine());
// getting Time
System.out.println("Enter Time :");
t = Integer.parseInt(br.readLine());
答案 2 :(得分:0)
尝试使用Scanner类。替换
InputStreamReader i1 =new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(i1);
通过 扫描仪扫描=新扫描仪(System.in);
此外,
si = (p*t*r)/100;
这就是你的问题所在。 p,t和r是整数,因此该操作将为您提供错误的值。这可以通过将整数的类型更改为float或double,或通过转换
来解决si = ((double) (p*t*r))/100;
另外,循环将继续执行内部的所有行,即使您要提供0。要解决此问题,请将此语句放在t值之后:
if(t==0)
break;
答案 3 :(得分:0)
而不是检查与利息计算相关的变量。对于利息计算,不仅T偶P或R不应为0,因此请检查SI!= 0而不是检查t!= 0。如上所述,将0与任何给定0相乘,而不考虑任何其他值。它避免了多个值的变量检查
答案 4 :(得分:0)
试试这个:
import java.io.*;
class p6
{
InputStreamReader i1 =new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(i1);
// calculating the CI and SI
public void calc()throws IOException
{ double p,t,r, a, si, ci;char k;//Changed all to double.
do
{
// getting principle
System.out.println("Enter Principle in decimal:");
p = Double.parseDouble(br.readLine());// changed to Double.parseDouble to store double value.
// getting Rate
System.out.println("Enter Rate in decimal :");
r = Double.parseDouble(br.readLine());// changed to Double.parseDouble to store double value.
// getting Time
System.out.println("Enter Time :");
t = Double.parseDouble(br.readLine());// changed to Double.parseDouble to store double value.
//calculating SI
si = (p*t*r)/100;
// calculating amount
a = (double)p*(Math.pow((1+r/100),t));
// calculating CI
ci = a - p;
// printing Difference
System.out.println("Difference between CI and SI = "+(ci-si));
}while(t!=0);//end of DOWhile
}// end of calc
}//end of p6