为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我这个会出错

package com.imooc.test;

public class TryCatchTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        TryCatchTest tct=new TryCatchTest();
        int result=tct.test();
        System.out.println("test()fangfa执行完毕,返回值为"+result);

    }
    public int test(){
        int divider=10;
        int result=100;
        try{
            while(divider>-1){
                divider--;
                result=result+100/divider;
                return result;
            }
        }catch(Exception e){
            e.printStackTrace();
            System.out.println("循环抛出异常了");
            return -1;
        }

        
        }

        

}

正在回答

6 回答

return 写在while循环里面,导致只执行一次循环,就return 结束了。

package com.imooc.test;

public class TryCatchTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        TryCatchTest tct = new TryCatchTest();
        int result = tct.test();
        System.out.println("test()fangfa执行完毕,返回值为" + result);

    }

    public int test() {
        int divider = 10;
        int result = 100;
        try {
            while (divider > -1) {
                divider--;
                result = result + 100 / divider;
            }
            return result;
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("循环抛出异常了");
            return -1;
        }
    }

}


1 回复 有任何疑惑可以回复我~

try块中 return result应该放在 while 循环的外面

try{
     while(divider>-1){
         divider--;
         result=result+100/divider;
     }
     return result;
 }catch(Exception e){
     e.printStackTrace();
     System.out.println("循环抛出异常了");
     return -1;
 }

 


1 回复 有任何疑惑可以回复我~

return result;
这句代码应该写在循环外面,
你写在循环里面了,
当写在循环内时,循环执行到return result;
就立即结束该方法了,就不会引发异常了

1 回复 有任何疑惑可以回复我~

没有返回值啊   在捕获异常块里面写返回值是不行啊  万一没有异常呢??那就没有返回值了啊


0 回复 有任何疑惑可以回复我~

错误的信息是什么啊?

0 回复 有任何疑惑可以回复我~

public int test(){

        int divider=10;

        int result=100;

        try{

            while(divider>-1){

                divider--;

                result=result+100/divider;

                return result;

            }

        }catch(Exception e){

            e.printStackTrace();

            System.out.println("循环抛出异常了");

            return -1;

        }

//方法的结尾处需要一个返回值,而不是在try catch内。

return 0;

}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409792    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

为什么我这个会出错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信