这个代码编译,当我在Netbeans上运行时,我可以得到结果,但我总是得到一个RuntimeException。 我在Javadocs上发现,这是在Java虚拟机正常运行期间可以抛出的异常的超类。我怎么能摆脱它?
// i++
float Etplus, TrueEplus, TrueVplus, fplus1=0;
// Summation from i=1 to 10000
for (int i=1;i<=10000;i++){
fplus1 +=(float) 1/(Math.pow(i,4));
}
TrueVplus = (float) ((Math.pow(Math.PI, 4)) / 90);
TrueEplus = (float) TrueVplus - fplus1;
Etplus = (float)(TrueEplus/TrueVplus)*100;
JOptionPane.showMessageDialog (null,"Ft(i++) = "+TrueVplus + "\n\nFa(i++) = " +fplus1 + "\n\nEt(i++) = ("+Etplus+ ")%","Results for i++ (Float)", JOptionPane.INFORMATION_MESSAGE);
// i--
float Etminus, TrueEminus, TrueVminus, fminus1=0;
// Summation from i=10000 to 1
for (int j=10000;j>=1;j--){
fminus1 += (double) 1/(Math.pow(j, 4));
}
TrueVminus = (double) (Math.pow((Math.PI), 4))/90;
TrueEminus = (double) TrueVminus - fminus1;
Etminus = (double) (TrueEminus/TrueVminus)*100;
JOptionPane.showMessageDialog (null, "Ft(i--) = "
+TrueVminus + "\n\nFa(i--) = " +fminus1 + "\n\nEt(i--) = (" +Etminus+")%","Results for i--(Float)", JOptionPane.INFORMATION_MESSAGE);
答案 0 :(得分:1)
我不知道你是如何编译的,因为对我来说,它并不是。这些行有问题:
TrueVminus = (double) (Math.pow((Math.PI), 4))/90;
TrueEminus = (double) TrueVminus - fminus1;
Etminus = (double) (TrueEminus/TrueVminus)*100;
您将结果转换为双精度数,但变量本身是浮点数。如果你这样做:
TrueVminus = (float) (Math.pow((Math.PI), 4))/90;
TrueEminus = (float) TrueVminus - fminus1;
Etminus = (float) (TrueEminus/TrueVminus)*100;
然后它对我有用