我怎么能阻止我的程序退出后第二次循环
本文关键字:退出 第二次 循环 程序 我的 怎么能 | 更新日期: 2023-09-27 18:06:41
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Excersises
{
class Program
{
static void Main(string[] args)
{
string input;
bool correct = true;
Console.WriteLine("Please choose your favorite beverage");
Console.WriteLine("For Cola type '1'");
Console.WriteLine("For Sprite type '2'");
Console.WriteLine("For Fanta, type '3'");
Console.WriteLine("For Bitter Lemon, type '4'");
Console.WriteLine("For Beer, type '5'");
input = Console.ReadLine();
while (correct)
{
if (input == "1")
{
Console.WriteLine("Enjoy your Cola!");
Console.ReadLine();
correct = true;
}
else if (input == "2")
{
Console.WriteLine("Enjoy your Sprite!");
Console.ReadLine();
correct = true;
}
else if (input == "3")
{
Console.WriteLine("Enjoy your Fanta!");
Console.ReadLine();
correct = true;
}
else if (input == "4")
{
Console.WriteLine("Enjoy your Bitter Lemon!");
Console.ReadLine();
correct = true;
}
else if (input == "5")
{
Console.WriteLine("Enjoy your beer!");
Console.ReadLine();
correct = true;
}
else if (input == " ")
{
Console.WriteLine("That is not a valid input!");
Console.ReadLine();
correct = false;
}
}
}
}
我真的不知道为什么我的程序退出后,我试图输入第二次。如果我输入",它的功能就像它应该的那样,并打印"这不是一个有效的输入"。然而,我无法输入之后。我已经尝试了while循环来防止它关闭,但没有成功。我做错了什么?
你没做错什么。但是你设置了correct = false;
,你的程序只执行while(correct)
。在无效输入之后,它停止迭代,发现没有其他事情可做,并正确完成。您可能希望将循环中的条件更改为某些退出条件,例如while(continue)
,然后有一个特定的输入,其中continue = false
.
编辑:例子
bool workToDo = true;
while(workToDo) {
Console.WriteLine("Please choose your favorite beverage (and other text)");
string input = Console.ReadLine();
if (input == "1") {
Console.WriteLine("Enjoy your Cola!");
}
// Your normal options go here and for the other inputs.
else if(input == "exit") {
workToDo = false;
}
else {
Console.WriteLine("That is not a valid input! Try again!");
}
注意,我没有使用correct
变量。我不知道你是否需要为其他目的检查正确的选项
退出条件是什么?根据您的评论,您对无效输入的预期响应似乎是显示一条错误消息,然后继续请求输入。如果您不想让循环退出,只需将while(correct)更改为while(true),在这种情况下,您将永远循环下去。
您围绕correct
标志的逻辑是错误的。您应该从bool correct = true;
开始,然后将while中的逻辑翻转到while (!correct)
。
你可以试试下面的方法:
string[] beverages = new string[]
{
"Cola", "Sprite", "Fanta", "Bitter Lemon", "Beer"
};
Console.WriteLine("Please choose your favorite beverage");
for (int i = 0; i < beverages.Length; i++)
{
Console.WriteLine("For {0} type '{1}'", beverages[i], i + 1);
}
bool correct = false;
while (!correct)
{
int input = 0;
if (int.TryParse(Console.ReadLine(), out input))
{
correct = Enumerable.Range(1, beverages.Length).Contains(input);
}
if (correct)
{
Console.WriteLine("Enjoy your {0}!", beverages[input - 1]);
}
else
{
Console.WriteLine("That is not a valid input!");
}
}
我猜你的while应该是
while(!correct)
而不是
while(correct)
试着用英语读:当请求不正确时,继续问他们想要什么你写道:当他们给我一个正确的答案时,我会问他们同样的问题:)