用于阶乘错误输出的 Java 程序

标签 java eclipse vbscript factorial

我正在 Eclipse IDE 中执行下面的 Java 代码。

public class Programs {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int i, num, n;
        n = 6;
        // num=n-1;
        for (i = 1; i <= n - 1; i++) {
            n = n * i;
        }
        System.out.println("Factorial of the declared number is" + " " + n);
    }

}

它显示输出为 -1420957696。如果我取消注释并在 for 循环中使用“num”变量,代码就可以正常工作。我认为对于每次迭代,与 i 的值相比,n 的值会逐渐发生令人难以置信的变化。相同的代码在 VBScript 中运行良好(见下文)。谁能解释一下区别?

Option Explicit
Dim  i, num
num = InputBox("enter a number")
For i=1 To num-1
    num = num * i
Next
MsgBox "The factorial of entered number is: " & num, 3, "Program for factorial"

最佳答案

Java:

n会变得相当大 cf。 i .

因此i <= n - 1永远是true , 直到你的 n溢出并环绕到负数。

一个解决方法是使用 num保留 n 的原始值,并使用 i <= num - 1作为停止条件。


VBScript:

在各种基础知识中(例如 VBScript、VBA),num-1在循环开始时有效计算,并进一步调整为 num对停止条件没有影响。您可以通过运行明确地看到这一点

Dim j
Dim i

j = 10
For i = 1 To j
    WScript.Echo i
    j = 1 'has no effect on the stopping condition.
Next

关于用于阶乘错误输出的 Java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46034916/

相关文章:

java - Java中形状的快速联合

java - 多重就业和全局值(value)

java - 如何 "animate"向 JTable 添加行

eclipse - 使用 maven tomcat 和 eclipse 进行远程调试

excel - VBScript写入Excel不写入

windows - 最小化其他应用程序的批处理文件

vbscript MsgBox() 的 Javascript 等效函数

java - java中统计单词出现的次数

java - 将 Java Web 项目部署到物理服务器

java - 配置 eclipse 以将 .esp 作为 jsp 文件查看