加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

用于阶乘不正确输出的Java程序

发布时间:2020-12-15 05:18:31 所属栏目:Java 来源:网络整理
导读:我在 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("Factor
我在 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将会变得相当大.一世.

因此,i< = n - 1将永远为真,直到你的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读