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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马斯巴达 高级黑马   /  2013-3-12 17:13  /  2557 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 谢军 于 2013-3-12 17:48 编辑
  1. public static int valueRetu(){
  2.         int x=1;
  3.         while(x<100){
  4.                 if(x!=90)
  5.                         {
  6.                         System.out.print(x+",");
  7.                      x++;
  8.                      }
  9.                           // return x;</font>
  10.         }
  11.         System.out.println(x+".");</font>
  12.         //return 0;</font>
  13.         
  14. }
复制代码
  1. public static int valueRetu(){
  2.         int x=1;
  3.         while(x<100){
  4.                 if(x!=90)
  5.                         {
  6.                         System.out.print(x+",");
  7.                      x++;
  8.                      }
  9.         }
  10.         System.out.println(x+".");
  11.         return x;
  12.        
  13. }
复制代码
我想在x=90的时候用return退出,并且输出最后一个90这个数字和句号。这个return是不是应该写在while循环外?可是为什么输出语句不执行呢?

另外return到底需要什么条件才可以使用呢?必须有返回值,不是void,除了这些之外呢?希望有经验的同学给解释下!谢啦

return之前的输出语句System.out.println(x+".");为什么不执行呢?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

17 个回复

倒序浏览
public static int valueRetu(){
        int x=1;
        while(x<100){
                if(x!=90)
                        {
                        System.out.print(x+",");
                     x++;
                     }
                          // return x;</font>
        }
        System.out.println(x+".");</font>
        //return 0;</font>
        
}
你的条件是x!=90
所以当x=90的时候if语句就不会执行,然后就直接执行return,然后就直接跳出while循环,不会打印90

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
return的常用作用有以下两种一种是返回参数所用的关键字,假如一个有返回值的方法执行完了之后需要返回一个参数,示例:public string functionTest(){         String a = "abc";         return a;}那么这个方法被调用之后就会返回一个值为abc的字符串,string result = functionTest();第二种用法是,代码执行到此处终止。比如当代码执行到某个地方会出现几种结果,然后其中一种结果就不能执行后续代码,这时候在那里加上一个return就可以终止后面的代码执行。
回复 使用道具 举报
有点乱,你将就着看
回复 使用道具 举报
本帖最后由 冯海霞 于 2013-3-12 17:34 编辑
  1. int x=1;
  2.         while(x<100){
  3.                 if(x!=90)
  4.                         {
  5.                         System.out.print(x+",");
  6.                      x++;
  7.                      }
  8.                 else
  9.               break;    // return ;
  10.         }
  11.         System.out.println(x+".");
复制代码
return那个地方用break能达到你说的效果,return的用法是1、指定一个方法返回什么值;2、会直接导致当前的方法退出。也就是你这个地方如果用return,执行到这里时 main函数直接退出了,后面的语句就执行不到了   
回复 使用道具 举报
你为什么不用if语句在x=90的时候在用return语句呢,这样思路就清晰多了,而你的程序还有一个问题就是x++应该在while循环语句中,这样才能实现不停的自增啊,下面我为你修改了一下代码,运行的结果是1,2,3,。。。。。90.不知道你是不是要这样的结果,如果不是在回复下你想要的结果。
  1. public class Demo2 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 int x=0;
  7.                 while(x<100){
  8.                         x++;
  9.                         if(x==90){
  10.                                 System.out.println(x+".");
  11.                                 return ;
  12.                         }
  13.                         System.out.println(x+",");
  14.                        
  15.                        
  16.                 }
  17.         }

  18. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
冯海霞 发表于 2013-3-12 17:28
return那个地方用break能达到你说的效果,return的用法是1、指定一个方法返回什么值;2、会直接导致当前的 ...

我终于搞好了。。。。
回复 使用道具 举报
本帖最后由 谢军 于 2013-3-12 17:44 编辑
黑马潘浩 发表于 2013-3-12 17:31
你为什么不用if语句在x=90的时候在用return语句呢,这样思路就清晰多了,而你的程序还有一个问题就是x++应 ...

嗯,,看了这个突然思路清晰了。。刚才头有点大谢谢啦
public static int valueRetu(){
        int x=1;
        while(x<100){
                if(x!=90)
                        {
                        System.out.print(x+",");
                     x++;
                     }
        }
        System.out.println(x+".");
        return x;
       
}
不过我还是不懂为什么这个最后的输出句号的为什么没有输出呢?
回复 使用道具 举报
本帖最后由 白堇翎 于 2013-3-12 17:53 编辑
  1. public static void valueRetu(){
  2.         int x=1;
  3.         while(x<100){
  4.                 if(x!=90)
  5.                         {
  6.                         System.out.print(x+",");
  7.                      x++;
  8.                      }
  9. else
  10. break;
  11.         }
  12. System.out.println(x+".");
  13. }
复制代码
囧 自我检讨下 没有看到是int类型的 需要返回值..那么代码应该是这样

楼主这里你要注意假如你不加break的话循环是不会自己停止的 所以我觉得还是加上break 自动档比较舒服..
  1. <span style="font-size: 14px; line-height: 1.5;">valueRetu();</span>
  2.         }

  3. public static int valueRetu(){
  4. int x = 1;
  5. while(x<100){
  6. if(x!=90)
  7. {
  8. System.out.print(x+",");
  9. x++;
  10. }
  11. else
  12. break;
  13. }
  14. System.out.println(x+".");
  15. return x;
  16. }

复制代码
回复 使用道具 举报
1、你要是想根据判断返回当然是要写在while循环里边了。
2、既然return了,在return后面的所有语句就都不执行了。
3、至于什么时候用return,当你需要你调用的方法获取一个值的时候就用return,当你调用方法只需要打印之类的就用void就可以了
回复 使用道具 举报
冷叙辰 发表于 2013-3-12 17:40
1、你要是想根据判断返回当然是要写在while循环里边了。
2、既然return了,在return后面的所有语句就都不执 ...

我在return之前的输出语句也没有执行 ,这是为什么?
回复 使用道具 举报
谢军 发表于 2013-3-12 17:39
嗯,,看了这个突然思路清晰了。。刚才头有点大谢谢啦
public static int valueRetu(){
        int x=1;

你这段代码搞错了 是个死循环
当x=90的时候,x就不变了,一直在while那里循环。。。。
回复 使用道具 举报
冯海霞 发表于 2013-3-12 17:49
你这段代码搞错了 是个死循环
当x=90的时候,x就不变了,一直在while那里循环。。。。 ...

恩恩。、确实是这样啊。。哦啦。。明白啦!话说今天论坛认真活跃,这么多回答的,收获颇多额!{:3_57:}
回复 使用道具 举报
谢军 发表于 2013-3-12 17:46
我在return之前的输出语句也没有执行 ,这是为什么?

额~~你的判断条件不是当x不等于90的时候“输出x+,并且x++”么,和你想在90的时候输出不一样啊,你这是个死循环,x一直等于1
回复 使用道具 举报
冯海霞 发表于 2013-3-12 17:49
你这段代码搞错了 是个死循环
当x=90的时候,x就不变了,一直在while那里循环。。。。 ...

当等于90的时候就不能执行if里面的语句啦,也就是没有循环语句啦。那程序也不能进行循环了啊,是不是说明程序处于类似卡住,不知如何运行中呢?
回复 使用道具 举报
谢军 发表于 2013-3-12 18:00
当等于90的时候就不能执行if里面的语句啦,也就是没有循环语句啦。那程序也不能进行循环了啊,是不是说明 ...

就在那判断x<100成立,if语句不成立;在返回来,判断x<100成立,if语句不成立;。。。。。
回复 使用道具 举报
谢军 发表于 2013-3-12 17:39
嗯,,看了这个突然思路清晰了。。刚才头有点大谢谢啦
public static int valueRetu(){
        int x=1;

1<100,就满足了然后就进入了无限的while循环中,因为while的条件一直满足,后面的语句轮不到执行的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马