新人提问!关于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

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

你3位置的递归方法代码是什么?

递归字面意思就是先递进再回归,你可以理解为,递进的执行:成第一次值的传递是sss1 = 3.5 ,第二次值的传递是 sss2 = 9.5 到此为止递进结束,回归的执行:第一次return1返回 9.5 ,第二次 return返回 3.5。图片说明