芜湖!起飞啦 2020-06-12 07:31 采纳率: 0%
浏览 326

新人提问!关于return关键字不能跳出方法的问题

自学java 3个月了 第一次写项目 遇到了写问题不太明白,诚心请教下各位程序员哥哥。
o(╯□╰)o

代码如下,从1到9是debug的执行顺序。不明白为什么return 返回方法的结果之后会直接跳到8,而不是结束方法。 也不知道这里为什么sss变成了3.5。

有没有大佬可以不吝赐教呀!

            sss = sss + (gprice * i);     //  1.  sss=3.5     4. sss=sss+6=9.5
            System.out.print("是否继续(y/n):"); //  2. y    5. n
            String s = sc.next();
            if (s.equals("y")) {
                JDBCUtils.close(rs, pstmt, null);
                JDBCUtils.close(rss, pstmtt, null);
                JDBCUtils.close(null, pstmttt, null);
                balanceContinue(conn, sss);  //3.  递归          //8. return完 跳到这一行代码,且sss变成了3.5。本行结束后,又直接跳到9。
            }
            if (s.equals("n")) {
                JDBCUtils.close(rs, pstmt, null);
                JDBCUtils.close(rss, pstmtt, null);
                conn.commit();
                JDBCUtils.close(null, pstmttt, conn);
                System.out.println(sss);         //  6. sss=9.5
            }
        } catch (SQLException e) {
            conn.rollback();
            e.printStackTrace();
        }
        return sss;          // 7.  sss=9.5  //9 sss=3.5  这个方法结束 返回值是3.5
  • 写回答

3条回答 默认 最新

  • 本自具足反求诸己 2020-06-12 08:40
    关注

    这程序写的,问题有点多。
    1.return放到最后存在很大的问题,程序如果执行异常是没有办法运行最后的return的
    2.由于程序中做了分支处理,最合理处理方式是将return放到每个分支上去或者是放到所有分支都处理完之后,中间不要有异常处理
    3.递归程序必须呈现出明显的递归结构,递归结构最后抽取为函数
    4.值传递和地址传递问题在这里应该是得到了反面的情况,java中值传递用的直接数据类型,地址传递一般考虑用对象
    5.在字符串做比较的时候,一般将常量放在主位置上,s.equals("y")应改为“y”.equals(s)
    目前先看到了这些问题

    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大