黑马程序员技术交流社区
标题:
while循环求和问题
[打印本页]
作者:
龚建锋
时间:
2012-7-18 21:50
标题:
while循环求和问题
//求1+。。。100的和,尝试有while循环
class WhileSum
{
public static void main(String[] args)
{
int sum=0;
int x=0;
while(x>0&&x<=100)
{
sum+=x;
x++;
}
System.out.println("sum="+sum);
}
}
运行结果怎么是0呢?大家帮忙看看
作者:
程潇
时间:
2012-7-18 21:54
循环条件写错了
x初始值为0,不满足x>0&&x<=100,循环体不执行,直接打印的sum初始值,所以是0
作者:
梁小波
时间:
2012-7-18 21:54
你的条件是x>0才执行;而你的x=0;当然不符合条件!所以就没有执行while(){};
所以才会是0;
作者:
丁二跃
时间:
2012-7-18 21:55
因为你的 while 循环根本就没运行啊
x 初始为 0 ,不符合 x>0&&x<=100 条件 ,所以…………
改为 让 x 初始等于1 就可以了
作者:
杨政
时间:
2012-7-18 21:55
while(x>0&&x<=100)
x的初值是0,括号中结果为假,不执行while语句啊。
作者:
龚建锋
时间:
2012-7-18 22:11
谢谢,改了x的初始值,OK了~~
作者:
京鱼龙
时间:
2012-7-18 22:38
本帖最后由 罗京雨 于 2012-7-18 22:44 编辑
class WhileSum
{
public static void main(String[] args)
{
int sum=0;
int x=0;
//这里应该写成x = 1
while(x>0&&x<=100)
{
sum+=x;
x++;
}
System.out.println("sum="+sum);
}
}
你的意思大概是这个0是怎么得来的。
首先你要知道while语句的的运行流程图。while语句是一直执行直到false,然后在返回到表达式,最后在执行输出语句。所以这个0应该是你定义的sum的值。假如你定义的是sum = 1,则打印出来是1.
12311.JPG
(22.09 KB, 下载次数: 213)
下载附件
2012-7-18 22:37 上传
作者:
陈冲
时间:
2012-7-18 22:53
class WhileSum
{
public static void main(String[] args)
{
int sum=0;
int x=0;
while(x>0&&x<=100)//定义x的时候初始化为x=0,不满足这一行的条件x>0&&x<=100,则不执行while的函数体,直接执行下一条语句
{
sum+=x;
x++;
}
System.out.println("sum="+sum);
}
}
复制代码
定义x的时候初始化为x=0,while循环设定的条件x>0&&x<=100,则不执行while的函数体,直接执行下一条语句
也就是输出语句,因为没有执行改变x的值的语句,所以输出结果为初始化的值0。
作者:
汤密奕
时间:
2012-7-18 22:56
循环条件没满足,把x=0,改成x=1,把条件改成x<101,不然计算的是1-99的和
作者:
王宝康
时间:
2012-7-18 23:33
while语句是Java语言中的最基本的循环语句,基本格式为:
[初始化部分]
while(循环条件){
循环体,包括迭代部分
}
初始化部分是可选的,当代表循环条件的布尔表达式的值为true时,就重复执行循环,否则终止循环,楼主的初始化部分中定义int x=0,不满足循环条件,x>0&&x<=100为false,没有进去循环体,直接打印x的值,
class WhileSum
{
public static void main(String[] args)
{
int sum=0;
int x=1;//可以改变一下初始化条件
while(x>0&x<=100)
{
sum+=x;
x++;
}
System.out.println("sum="+sum);
}
}
复制代码
另外循环条件那儿也需要,楼主使用的是&&,这儿涉及到&&和&的区别,&&为短路与,&为正常的与,若用&&的话,如果x>0为false的话,&&为短路与,左边为假的话就不再判断右边了,使用时需要注意
作者:
张世威
时间:
2012-7-19 00:11
//求1+。。。100的和,尝试有while循环
class WhileSum
{
public static void main(String[] args)
{
int sum=0;
int x=0;
while(x>0&&x<=100)
{
sum+=x;
x++;
}
System.out.println("sum="+sum);
}
}
1、int x=0: x=0 不满足 x>0&&x<=100,while循环进不去,直接执行 System.out.println("sum="+sum);了,结果sum=0;
2、我推荐几种种写法:
反正都是循环100次,把1到100的值放到sum里面
public class Demo { public static void main(String[] args) {
test();
test1();
System.out.println(test2(100));
}
//1:速度较快
public static void test() {
int sum = 0;
int x = 1;
while (true) {
if (x > 100)
break;
sum += x++;
}
System.out.println("sum=" + sum);
}
//2:使用for,速度一般
public static void test1() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("sum=" + sum);
}
//3:使用递归,较慢
public static int test2(int i){
if(i==1)
return 1;
return i+test2(i-1);
}
}
作者:
孙浩迪
时间:
2012-7-19 00:13
class WhileSum
{
public static void main(String[] args)
{
int sum=0;
int x=0;
while(x>0&&x<=100) //x>0 吗??? 条件错了, 不走while 循环 那sum当然是0了
{
sum+=x;
x++;
}
System.out.println("sum="+sum);
}
}
作者:
杨康
时间:
2012-7-19 00:15
int x = 0,循环条件是x > 0,循环条件都不满足,都没开始循环。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2