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
相关产品推荐
相关产品推荐

