You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Java中do-while与switch-case循环的问题?

代码问题排查与修正

核心问题梳理

  • 局部变量重复定义,循环条件完全失效
    在do代码块开头定义了int shapecheck=1;,但每个case分支里又重新声明了同名的int shapecheck,这会直接覆盖外层变量。循环条件while (shapecheck==1)判断的始终是开头那个固定为1的变量,用户输入的选择根本无法控制循环结束,要么死循环,要么逻辑完全不符合预期。

  • 图形选择仅读取一次,无法重复切换图形
    shape变量在循环外部只读取了一次,进入do-while循环后不会再次提示用户选择图形,每次循环都执行第一次选中的图形计算,完全达不到“重复执行不同图形面积计算”的需求。

  • 初始提示文本格式错误
    提示字符串里的n/是换行符\n的笔误,且多余空格导致提示信息显示混乱,用户无法清晰看到选择说明。


修正后的代码

public static void main(String[] args) 
{
    Scanner scanner = new Scanner(System.in);
    int shapecheck;
    do {
        // 每次循环重新提示用户选择图形
        System.out.println("请输入图形对应的数字:\n(1-三角形, 2-圆形, 3-矩形)");
        int shape = scanner.nextInt();
        
        switch(shape) {
            case 1:
                CalcArea.CalcTri();
                break;
            case 2:
                CalcArea.CalcCir();
                break;
            case 3:
                CalcArea.CalcRect();
                break;
            default:
                System.out.println("无效的图形选择,请重新输入");
        }
        
        // 统一询问是否继续操作
        System.out.println("是否计算其他图形?(1-是, 0-否)");
        shapecheck = scanner.nextInt();
    } while (shapecheck == 1);  
}

修正说明

  1. 将shapecheck移到循环外声明,避免局部变量覆盖,确保用户输入的选择能正确控制循环的终止。
  2. 把图形选择的提示和shape的读取逻辑放到do循环内部,每次循环都让用户重新选择图形。
  3. 统一在switch逻辑结束后询问是否继续,删除重复代码,同时修正了提示文本的格式错误。
  4. 给default分支添加提示,处理无效输入的场景。

内容的提问来源于stack exchange,提问作者Brazos Wheeler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:50:45