为什么不能直接结束程序?

刚学java,

这是判断三角形是什么三角形的代码;

结束程序选择n时候都会出现小瑕疵,不知道是哪里出来问题;

大家可以运行下,每多判断一次就会多出现一个结束程序。

class sjx {
    double a, b, c;

    public static void bianchang(double x, double y, double z) {
            if (x + y > z) {
                System.out.println("可以构成三角形");
                sjxsort(x, y, z);
            } else {
                System.out.println("不可以构成三角形");
            }
        xunhuan();
    }

    public static void sjxsort(double a, double b, double c) {
        double bian[] = new double[3];
        bian[0] = a;
        bian[1] = b;
        bian[2] = c;
        Arrays.sort(bian);

        double e = bian[2] * bian[2];
        double v = bian[1] * bian[1] + bian[0] * bian[0];
        if (bian[2] == bian[1] && bian[1] == bian[0]) {
            System.out.println("这是一个等边三角形,边长为:" + bian[2]);

            return;
        }
        if (e == v && bian[1] == bian[0]) {
            System.out.println("这是一个等腰直角三角形,最长的边为:" + bian[2]);

            return;
        }
        if (e > v && bian[1] == bian[0]) {
            System.out.println("这是一个等腰钝角三角形,最长的边为:" + bian[2]);

            return;
        }
        if (e < v && bian[1] == bian[0]) {
            System.out.println("这是一个等腰锐角三角形,最长的边为:" + bian[2]);

            return;
        }
        if (e == v) {
            System.out.println("这是一个直角三角形,最长的斜边为:" + bian[2]);

            return;
        }
        if (e > v) {
            System.out.println("这是一个钝角三角形,最长的边为:" + bian[2]);

            return;
        }
        if (e < v) {
            System.out.println("这是一个锐角三角形,最长的边为:" + bian[2]);
        }

    }

    public static void xunhuan() {
        Scanner input2 = new Scanner(System.in);
        System.out.println("=====================================");
        System.out.print("是否要继续判断 (y/n):");
        char zi;
        zi = input2.next().charAt(0);
        switch (zi) {
            case 'y':
                System.out.println("=====================================");
                System.out.println("你选择了继续进行判断");
                java_判断三角形.main(null);
            case 'n':
                System.out.println(" ——————————————————");
                System.out.println(" |  你选择了结束   |");
                System.out.println(" ——————————————————");
                break;
        }
    }
}
public class java_判断三角形 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        sjx A = new sjx();
        System.out.println("请输入三条边长");
        System.out.print("请输入第一条边长:");
        double x = A.a = input.nextDouble();
        System.out.print("请输入第二条边长:");
        double y = A.b = input.nextDouble();
        System.out.print("请输入第三条边长:");
        double z = A.c = input.nextDouble();
        sjx.bianchang(x, y, z);
    }
}

 

正常现象,因为你写的是一个递归形式的调用。当然最重要的是你没有写 break。

  public static void xunhuan() {
    Scanner input2 = new Scanner(System.in);
    System.out.println("=====================================");
    System.out.print("是否要继续判断 (y/n):");
    char zi;
    zi = input2.next().charAt(0);
    switch (zi) {
      case 'y':
        System.out.println("=====================================");
        System.out.println("你选择了继续进行判断");
        Test.main(null);
        // 由于这里没有写 break,所以每次递归进去,在回归的时候都会继续执行下一个 case
        break;
      case 'n':
        System.out.println(" ——————————————————");
        System.out.println(" |  你选择了结束   |");
        System.out.println(" ——————————————————");
        break;
    }
  }

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632