A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈昊 中级黑马   /  2013-7-2 10:37  /  1243 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package org.circle;

public class Manji {

                public static void main(String[] args)
                {
                for(int a = 0;a<=25;a++){
                       
                                for(int b=0;b<=33;b++){
                               
                                   int c =100-a-b;
                               
                              if(a*4+b*3+c*0.5==100){
                               
                                System.out.println("  "+a+" "+b+" "+c);
                                }
                        }
                       
                }
                }
        }
此程序的运行结果为  
0 20 80
  5 13 82
  10 6 84
package org.circle;

public class Manji {

                public static void main(String[] args)
                {
                for(int a = 0;a<=25;a++){
                       
                                for(int b=0;b<=33;b++){
                               
                                   int c =100-a-b;
                               
                              if(a*4+b*3+c*0.5==100);{
                               
                                System.out.println("  "+a+" "+b+" "+c);
                                }
                        }
                       
                }
                }
        }

if(a*4+b*3+c*0.5==100);多了个;结果却是:另外一个结果。这是为何?

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

6 个回复

倒序浏览
多了个;if语句就到;结束,后面那句话就不受他控制了就没有判断了,结果肯定不一样啊
回复 使用道具 举报
我没有具体看 但是出现了0.5还都是用Int型。可能会出现强制转换时候丢失精度的错误。
回复 使用道具 举报
if(a*4+b*3+c*0.5==100);  后面加分号以后 后面的大括号就变成局部代码块。就不是if的循环体。
{
System.out.println("  "+a+" "+b+" "+c);
}//局部代码块
回复 使用道具 举报
;代表语句的结束
if判断完了就加;相当于后续的动作没有执行
回复 使用道具 举报
同学,分号的意思在于一段语句的结束,原来没有分号,判断为true后,输出你想要的内容。你在if语句后面加了个分号,这会导致这个if语句只有判断,并没有相应的执行,而你这段程序的目的是通过你的判断语句来实现的,当然得到的结果差距很大
回复 使用道具 举报
  1. public static void main(String[] args) {
  2.                 for (int a = 0; a <= 25; a++) {
  3.                         for (int b = 0; b <=33; b++) {
  4.                                 int c = 100 - a - b;
  5.                                 if (a * 4 + b * 3 + c * 0.5 == 100) ;
  6.                                 {
  7.                                         System.out.println("  " + a + " " + b + " " + c);
  8.                                        
  9.                                 }
  10.                         } //内层循环结束
  11.                 }    //外层循环结束
  12.         }
复制代码
0 0 100
  0 1 99
  0 2 98
  0 3 97
  0 4 96
  0 5 95
  0 6 94
  0 7 93
  0 8 92
  0 9 91
  0 10 90
  0 11 89
  0 12 88
  0 13 87
  0 14 86
  0 15 85
  0 16 84
  0 17 83
  0 18 82
  0 19 81
  0 20 80
  0 21 79
  0 22 78
  0 23 77
  0 24 76
  0 25 75
  0 26 74
  0 27 73
  0 28 72
  0 29 71
  0 30 70
  0 31 69
  0 32 68
  0 33 67
  1 0 99
  1 1 98
  1 2 97
  1 3 96
  1 4 95
  1 5 94
  1 6 93
  1 7 92
  1 8 91
  1 9 90
  1 10 89
  1 11 88
  1 12 87
  1 13 86
  1 14 85
  1 15 84
  1 16 83
  1 17 82
  1 18 81
  1 19 80
  1 20 79
  1 21 78
  1 22 77
  1 23 76
  1 24 75
  1 25 74
  1 26 73
  1 27 72
  1 28 71
  1 29 70
  1 30 69
  1 31 68
  1 32 67
  1 33 66
  2 0 98
  2 1 97
  2 2 96
  2 3 95
  2 4 94
  2 5 93
  2 6 92
  2 7 91
  2 8 90
  2 9 89
  2 10 88
  2 11 87
  2 12 86
  2 13 85
  2 14 84
  2 15 83
  2 16 82
  2 17 81
  2 18 80
  2 19 79
  2 20 78
  2 21 77
  2 22 76
  2 23 75
  2 24 74
  2 25 73
  2 26 72
  2 27 71
  2 28 70
  2 29 69
  2 30 68
  2 31 67
  2 32 66
  2 33 65
  3 0 97
  3 1 96
  3 2 95
  3 3 94
  3 4 93
  3 5 92
  3 6 91
  3 7 90
  3 8 89
  3 9 88
  3 10 87
  3 11 86
  3 12 85
  3 13 84
  3 14 83
  3 15 82
  3 16 81
  3 17 80
  3 18 79
  3 19 78
  3 20 77
  3 21 76
  3 22 75
  3 23 74
  3 24 73
  3 25 72
  3 26 71
  3 27 70
  3 28 69
  3 29 68
  3 30 67
  3 31 66
  3 32 65
  3 33 64
  4 0 96
  4 1 95
  4 2 94
  4 3 93
  4 4 92
  4 5 91
  4 6 90
  4 7 89
  4 8 88
  4 9 87
  4 10 86
  4 11 85
  4 12 84
  4 13 83
  4 14 82
  4 15 81
  4 16 80
  4 17 79
  4 18 78
  4 19 77
  4 20 76
  4 21 75
  4 22 74
  4 23 73
  4 24 72
  4 25 71
  4 26 70
  4 27 69
  4 28 68
  4 29 67
  4 30 66
  4 31 65
  4 32 64
  4 33 63
  5 0 95
  5 1 94
  5 2 93
  5 3 92
  5 4 91
  5 5 90
  5 6 89
  5 7 88
  5 8 87
  5 9 86
  5 10 85
  5 11 84
  5 12 83
  5 13 82
  5 14 81
  5 15 80
  5 16 79
  5 17 78
  5 18 77
这是答案的一部分,因为你在if (a * 4 + b * 3 + c * 0.5 == 100) ;后面加了逗号等于他在哪里结束了,并没有起到判断作用。他就按照二重循环的遍历方法来打印了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马