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

C#新手求助:捕获无效输入错误并实现重新输入数字功能

解决无效输入捕获与重新输入问题

要实现捕获非1-5的无效输入并允许重新输入,你需要将选择逻辑包裹在循环中,并添加对无效输入的处理分支。以下是修改后的完整代码:

Console.Clear();
while (true)
{
    Console.WriteLine("              Silahkan Pilih Jumlah Penarikan   ");
    Console.WriteLine("               ---------------------------                                ");
    Console.WriteLine("                  ----------------------           ");
    Console.WriteLine("1. 100000");
    Console.WriteLine("2. 300000");
    Console.WriteLine("3. 500000");
    Console.WriteLine("4. 1000000");
    Console.WriteLine("5. Jumlah lain");

    string input = Console.ReadLine();
    switch (input)
    {
        case "1":
            if (currentUser.getBalance() < 100000)
            {
                Console.WriteLine("Saldo tidak mencukupi :( ");
            }
            else
            {
                currentUser.setBalance(currentUser.getBalance() - 100000);
                Console.WriteLine("sisa saldo anda = " + currentUser.getBalance());
                Console.WriteLine("Terimakasih :)");
            }
            return; // 处理完成后退出流程
        case "2":
            if (currentUser.getBalance() < 300000)
            {
                Console.WriteLine("Saldo tidak mencukupi :( ");
            }
            else
            {
                currentUser.setBalance(currentUser.getBalance() - 300000);
                Console.WriteLine("sisa saldo anda = " + currentUser.getBalance());
                Console.WriteLine("Terimakasih :)");
            }
            return;
        case "3":
            if (currentUser.getBalance() < 500000)
            {
                Console.WriteLine("Saldo tidak mencukupi :( ");
            }
            else
            {
                currentUser.setBalance(currentUser.getBalance() - 500000);
                Console.WriteLine("sisa saldo anda = " + currentUser.getBalance());
                Console.WriteLine("Terimakasih :)");
            }
            return;
        case "4":
            if (currentUser.getBalance() < 1000000)
            {
                Console.WriteLine("Saldo tidak mencukupi :( ");
            }
            else
            {
                currentUser.setBalance(currentUser.getBalance() - 1000000);
                Console.WriteLine("sisa saldo anda = " + currentUser.getBalance());
                Console.WriteLine("Terimakasih :)");
            }
            return;
        case "5":
            Console.WriteLine("Masukan jumlah penarikan Tunai yang anda inginkan");
            Console.WriteLine("            (dalam kelipatan 100000)         ");
            double penarikan;
            while (true)
            {
                try
                {
                    penarikan = Double.Parse(Console.ReadLine());
                    if (penarikan % 100000 == 0)
                    {
                        if (currentUser.getBalance() < penarikan)
                        {
                            Console.WriteLine("Saldo tidak mencukupi :( ");
                            Console.WriteLine("Silahkan coba lagi ");
                        }
                        else
                        {
                            currentUser.setBalance(currentUser.getBalance() - penarikan);
                            Console.WriteLine("sisa saldo anda = " + currentUser.getBalance());
                            Console.WriteLine("Terimakasih :*");
                            return;
                        }
                    }
                    else
                    {
                        Console.WriteLine("Nominal yang anda masukan salah. Silahkan coba lagi ");
                    }
                }
                catch
                {
                    Console.WriteLine("Nominal yang anda masukan salah. silahkan  coba lagi");
                }
            }
        default:
            Console.WriteLine("Pilihan tidak valid! Silahkan masukkan angka 1-5.");
            Console.WriteLine("Tekan enter untuk mencoba lagi...");
            Console.ReadLine();
            Console.Clear();
            break;
    }
}

关键修改说明

  • 循环包裹选择逻辑:用while(true)将菜单展示和输入判断逻辑包裹,确保用户输入无效时能重复进入选择流程。
  • 添加default分支:捕获所有非"1"-"5"的输入,输出错误提示,等待用户确认后清空控制台并重新展示菜单。
  • 处理完成后退出流程:每个有效选项处理完成后,使用return直接退出当前方法(可根据你的代码结构替换为break跳出外层循环),结束流程。

内容的提问来源于stack exchange,提问作者FASTABIQUL KHOIROT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:40:32