文号
t23957
阅读
4617
回复
7
收藏
3
这段JAVA程序哪里错了!?!?
2010/03/15
IP:澳大利亚
        这段编码的作用是用来判断:一个分式在电脑里是否为“represented exactly ”,前面那个单词的意思是:一个分式乘以分母,如果结果是分子,那么就是;如果结果不是分子,那么此分式不是“represented exactly ”。分子和分母都是1~10内的(包括1、10)整数。
我编完后没有发现语法错误和逻辑错误,但是测试却不成功,把CPU全占满了,差点烧掉……

请诸位帮在下检查一下这段程序到底什么地方不对。
请慎重测试……


//created by INSANEFORM
public class ComputingFractions
{
    public static void main(String[] args)
    {
        int num1=1;
        int num2=10;
        
        int num11=num1;
        while (num11<=num2);
        num11++;
        //这是分子的取值轮
        int den1=1;
        int den2=10;
        
        int den11=den1;
        while (den11<=den2);
        den11++;
        //分母取值轮
    
        //

        if ((num11/den11)*den11 !=num11) // 分数乘以分母不等于分子
        System.out.println(num11 +" is not represented precisely");
    
    }
        
    
}
insaneform作者
16年10个月前IP:未同步
200975
1楼
因为浮点运算的一些规则,分数乘以分母并不都等于分子。
引用
评论
insaneform作者
16年10个月前IP:未同步
200976
2楼
啊,在最后一句有一处小小错误:应该为:
System.out.println(num11 + "/" +den11 +" is not represented precisely");
引用
评论
insaneform作者
16年10个月前IP:未同步
200977
3楼
求助~~~~~~~
引用
评论
16年10个月前IP:未同步
200978
4楼
完全不会写程序,路过帮顶顺便接分。
引用
评论
insaneform作者
16年10个月前IP:未同步
200979
5楼
呜呜呜,测试时好久没反应,看着不对劲就检查了一下CPU,一看差点吓死,100%全负荷运转啊~~~~我可怜的CPU,不知道少了多少小时的寿命。。。。
引用
评论
16年10个月前IP:未同步
201081
6楼

        int num1=1;
        int num2=10;
      
        int num11=num1;
        while (num11<=num2);
        num11++;

.....这个....while后面直接跟分号....根据条件判断...这个 while乃无限循环.....
你需要把while语句这行后面的分号去掉...同样..程序下文中还有一个同样的错误.....
我想你想要的语句应该是这样:


还有...CPU长期100%是不会烧掉的....最多死机...现在的CPU过热保护机制是很完善的....
引用
评论
16年10个月前IP:未同步
201146
7楼
稍微改了下,这样不会无限循环.....

//created by INSANEFORM


public class ComputingFractions
{
    public static void main(String[] args)
    {
        int num1=1;
        int num2=10;
        int num11=num1;
        int den1=1;
        int den2=10;
        int den11=den1;
        while (num11<=num2)
        {
            num11++;

            while (den11<=den2)
            {
                den11++;
                if (((num11/den11)*den11 !=num11)
                    System.out.println(num11 +" is not represented precisely");
            }
        }
  
    }  
}


但是有一点要LZ注意....两个整形相除的结果不是小数,而是整数....小数部分会被舍弃。
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的