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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 龚建锋 初级黑马   /  2012-7-18 21:50  /  6475 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//求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呢?大家帮忙看看

12 个回复

倒序浏览
循环条件写错了
x初始值为0,不满足x>0&&x<=100,循环体不执行,直接打印的sum初始值,所以是0
回复 使用道具 举报
你的条件是x>0才执行;而你的x=0;当然不符合条件!所以就没有执行while(){};
所以才会是0;
回复 使用道具 举报
因为你的 while 循环根本就没运行啊

x 初始为 0 ,不符合 x>0&&x<=100 条件 ,所以…………

改为 让 x 初始等于1 就可以了
回复 使用道具 举报
while(x>0&&x<=100)
x的初值是0,括号中结果为假,不执行while语句啊。
回复 使用道具 举报
谢谢,改了x的初始值,OK了~~
回复 使用道具 举报
本帖最后由 罗京雨 于 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, 下载次数: 214)

12311.JPG

评分

参与人数 1技术分 +1 收起 理由
黑马张扬 + 1

查看全部评分

回复 使用道具 举报
陈冲 中级黑马 2012-7-18 22:53:30
8#
  1. class WhileSum

  2. {

  3.         public static void main(String[] args)

  4.         {

  5.                 int sum=0;

  6.                 int x=0;

  7.                 while(x>0&&x<=100)//定义x的时候初始化为x=0,不满足这一行的条件x>0&&x<=100,则不执行while的函数体,直接执行下一条语句

  8.                 {

  9.                         sum+=x;

  10.                         x++;

  11.                 }

  12.                 System.out.println("sum="+sum);

  13.         }

  14. }
复制代码
定义x的时候初始化为x=0,while循环设定的条件x>0&&x<=100,则不执行while的函数体,直接执行下一条语句
也就是输出语句,因为没有执行改变x的值的语句,所以输出结果为初始化的值0。
回复 使用道具 举报
循环条件没满足,把x=0,改成x=1,把条件改成x<101,不然计算的是1-99的和
回复 使用道具 举报
    while语句是Java语言中的最基本的循环语句,基本格式为:
   [初始化部分]
    while(循环条件){
     循环体,包括迭代部分
     }
初始化部分是可选的,当代表循环条件的布尔表达式的值为true时,就重复执行循环,否则终止循环,楼主的初始化部分中定义int x=0,不满足循环条件,x>0&&x<=100为false,没有进去循环体,直接打印x的值,
  1. class WhileSum

  2. {

  3.         public static void main(String[] args)

  4.         {

  5.                 int sum=0;

  6.                 int x=1;//可以改变一下初始化条件

  7.                 while(x>0&x<=100)
  8.                 {

  9.                         sum+=x;

  10.                         x++;

  11.                 }

  12.                 System.out.println("sum="+sum);

  13.         }

  14. }
复制代码
另外循环条件那儿也需要,楼主使用的是&&,这儿涉及到&&和&的区别,&&为短路与,&为正常的与,若用&&的话,如果x>0为false的话,&&为短路与,左边为假的话就不再判断右边了,使用时需要注意
回复 使用道具 举报
//求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);
        }

}

      
        

评分

参与人数 1技术分 +1 收起 理由
黑马张扬 + 1

查看全部评分

回复 使用道具 举报
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);
        }
}
回复 使用道具 举报
int x = 0,循环条件是x > 0,循环条件都不满足,都没开始循环。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马