我的代码出了点问题。当我编译它时,它工作得很好,直到我达到了数字相除的地步。我得到的不是带小数的数字,而是0。正如您所看到的,我已经将最后一个变量更改为双精度,但没有任何有意义的结果。
我必须做些什么才能改变这一点?
int[] arr = new int[2];
System.out.println("enter two numbers: ");
arr[0] = sc.nextInt();
arr[1] = sc.nextInt();
int summa = arr[0]+arr[1];
System.out.println("What's "+arr[0]+" + "+arr[1]+" ?");
int vad = sc.nextInt();
if (summa == vad)
System.out.println("Correct!");
else
System.out.println("Wrong - The right answer is "+summa);
int summa2 = arr[0]-arr[1];
System.out.println("What's "+arr[0]+" - "+arr[1]+" ?");
int vad2 = sc.nextInt();
if (summa2 == vad2)
System.out.println("Correct!");
else
System.out.println("Wrong - The right answer is: "+summa2);
int summa3 = arr[0]*arr[1];
System.out.println("What's "+arr[0]+" * "+arr[1]+" ?");
int vad3 = sc.nextInt();
if (summa3 == vad3)
System.out.println("Correct!");
else
System.out.println("Wrong - The right answer is "+summa3);
double summa4 = arr[0]/arr[1];
System.out.println("What's "+arr[0]+" / "+arr[1]+" ?");
double vad4 = sc.nextInt();
if (summa4 == vad4)
System.out.println("Correct!");
else
System.out.println("Wrong - The right answer is "+summa4);
}}
发布于 2010-12-20 19:23:56
你正在阅读1,it it be .
2您需要转换为下面的double校验码
double summa4 = ((double)arr[0])/arr[1];
System.out.println("What's "+arr[0]+" / "+arr[1]+" ?");
double vad4 = sc.nextDouble();
if (summa4 == vad4)
System.out.println("Correct!");
else
System.out.println("Wrong - The right answer is "+summa4);发布于 2010-12-20 19:24:21
虽然summa4变量的类型是double,但它的计算是在整数除法中完成的。因此,结果不会有任何小数位。
例如,如果5和2都是整数或存储在int类型变量中的值,则5/2 =2而不是2.5。
更改:
double summa4 = arr[0]/arr[1]; 至
double summa4 = 1.0*arr[0]/arr[1];https://stackoverflow.com/questions/4489124
复制相似问题