我是c#的新手,并且编写了一个简单的控制台应用程序作为练习。我希望应用程序提出一个问题,并且当用户输入等于'y'或'n'时,只进入下一段代码。这是我到目前为止所拥有的。
static void Main(string[] args)
{
string userInput;
do
{
Console.WriteLine("Type something: ");
userInput = Console.ReadLine();
} while (string.IsNullOrEmpty(userInput));
Console.WriteLine("You typed " + userInput);
Console.ReadLine();
string wantCount;
do
{
Console.WriteLine("Do you want me to count the characters present? Yes (y) or No (n): ");
wantCount = Console.ReadLine();
string wantCountLower = wantCount.ToLower();
} while ((wantCountLower != 'y') || (wantCountLower != 'n'));
}
我从string wantCount;
起就遇到了麻烦。我想要做的是询问用户是否要计算字符串中的字符数,然后循环该问题,直到输入“y”或“n”(不带引号)。
请注意,我也想要满足输入的大写/小写,所以我想要将wantCount字符串转换为更低 - 我知道我现在如何使用它将无法正常工作,因为我正在设置{{1在循环内部,所以我不能在string wantCountLower
子句中的循环之外引用。
你能帮我理解如何实现这个逻辑吗?
答案 0 :(得分:2)
您可以将输入检查移动到循环内部并使用break
退出。请注意,您使用的逻辑将始终评估为true
,因此我已将此条件置之不理,并将char
比较更改为string
。
string wantCount;
do
{
Console.WriteLine("Do you want me to count the characters present? Yes (y) or No (n): ");
wantCount = Console.ReadLine();
var wantCountLower = wantCount?.ToLower();
if ((wantCountLower == "y") || (wantCountLower == "n"))
break;
} while (true);
还要注意?.
之前的空条件运算符(ToLower()
)。如果没有输入任何内容,这将确保NullReferenceException
不会被抛出。
答案 1 :(得分:0)
如果你想比较一个角色,那么ReadKey
你不需要while ((wantCountLower != 'y') || (wantCountLower != 'n'));
,你可以使用&&
,如果条件是这样:||
你的循环将是无限的一个,所以你可以在while(wantCount!= 'n')
使用n
代替char charYesOrNo;
do
{
charYesOrNo = Console.ReadKey().KeyChar;
// do your stuff here
}while(char.ToLower(charYesOrNo) != 'n');
,或者public class HelloThread extends Thread {
public void run() {
System.out.println("Hello from a thread!");
sendNotification(notification, memberId);
}
public static void main(String args[]) {
(new HelloThread()).start();
}
}
,这样它就会循环,直到你按下Runnable
run
答案 2 :(得分:-1)
y
或 n
按回车处理工作
static void Main(string[] args)
{
Console.Write("Do you see my text [y] yes, [n] no: ");
string output = Console.ReadLine();
switch (output)
{
case "y":
// Do your stuff
break;
case "n":
// Do your stuff
break;
}
}