gpt4 book ai didi

c# - 为什么我需要 2 Console.ReadLine();暂停控制台?

转载 作者:行者123 更新时间:2023-11-30 19:58:30 26 4
gpt4 key购买 nike

我刚刚开始学习 C#,我喜欢在继续之前了解所有内容。

我遇到的问题是我需要 2 Console.ReadLine();暂停控制台。如果我只使用 1,程序在输入后结束。那么为什么它需要 2 个 readline 方法而不是呢?有任何想法吗?

请注意,在我的代码中,我已经注释掉了 1 个 readline 方法,这是我希望我的程序工作的方式,但它没有。然而,删除注释允许程序运行,但我不明白为什么。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CoinFlip
{
class Program
{
static void Main(string[] args)
{

Random rng = new Random();
Console.WriteLine(@"

This program will allow you to guess heads or tails on a coin flip.

Please enter h for heads, or t for tails and press Enter: ");

char userGuess = (char)Console.Read();
int coin = rng.Next(0,2);

Console.WriteLine("Coin is {0}\n\n", coin);


if (coin == 0 && (userGuess == 'h' || userGuess == 'H'))
{

Console.WriteLine("It's heads! You win!");

}
else if (coin == 1 && (userGuess == 't' || userGuess == 'T'))
{
Console.WriteLine("It's tails! You win!");

}
else if (userGuess != 't' && userGuess != 'T' && userGuess != 'h' && userGuess != 'H')
{
Console.WriteLine("You didn't enter a valid letter");
}

else
{

if (coin == 0) { Console.WriteLine("You lose mofo. The coin was heads!"); }
if (coin == 1) { Console.WriteLine("You lose mofo. The coin was tails!"); }

}
Console.ReadLine();
//Console.ReadLine();
}
}
}

最佳答案

您正在使用 Console.Read(),它会在用户按下回车键后读取单个字符。然而,它只消耗那个单个字符 - 这意味着该行的其余部分(即使它是空的)仍在等待被消耗...... Console.ReadLine() 正在做。

对此最简单的解决方法是也更早地使用 Console.ReadLine():

string userGuess = Console.ReadLine();

.. 然后检查猜测是否是单个字符,或者只是将所有字 rune 字(例如 't')更改为字符串文字(例如 "t").

(或者按照 Servy 的建议使用 Console.ReadKey()。这取决于您是否希望用户按下回车键。)

关于c# - 为什么我需要 2 Console.ReadLine();暂停控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26677705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com