黑马程序员技术交流社区
标题:
发现一个问题,求解释
[打印本页]
作者:
陈昊
时间:
2013-7-2 10:37
标题:
发现一个问题,求解释
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);多了个;结果却是:另外一个结果。这是为何?
作者:
水。。。海
时间:
2013-7-2 10:45
多了个;if语句就到;结束,后面那句话就不受他控制了就没有判断了,结果肯定不一样啊
作者:
王靖远
时间:
2013-7-2 10:48
我没有具体看 但是出现了0.5还都是用Int型。可能会出现强制转换时候丢失精度的错误。
作者:
黄少海
时间:
2013-7-2 16:03
if(a*4+b*3+c*0.5==100); 后面加分号以后 后面的大括号就变成局部代码块。就不是if的循环体。
{
System.out.println(" "+a+" "+b+" "+c);
}//局部代码块
作者:
宋智超
时间:
2013-7-2 16:19
;代表语句的结束
if判断完了就加;相当于后续的动作没有执行
作者:
小五555
时间:
2013-7-2 16:26
同学,分号的意思在于一段语句的结束,原来没有分号,判断为true后,输出你想要的内容。你在if语句后面加了个分号,这会导致这个if语句只有判断,并没有相应的执行,而你这段程序的目的是通过你的判断语句来实现的,当然得到的结果差距很大
作者:
。子伤。
时间:
2013-7-2 22:49
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 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) ;后面加了逗号等于他在哪里结束了,并没有起到判断作用。他就按照二重循环的遍历方法来打印了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2