猿问

为什么我的代码在 if 语句中多次输出字符串?

我的代码多次输出相同的字符串。例如,输入 40 会导致“不!您的答案太高。请重试。” 两次,并且显示两次“您的答案太低”。


while (numberguess != 40.5)

{

    numberguess = Console.Read();

    if (numberguess < 40.5)

    {

        Console.WriteLine("Nope! Your answer is too low. Try again.");


    }

    else if (numberguess > 40.5)

    {

        Console.WriteLine("Nope! Your answer is too high. Try again.");

    }

    else if (numberguess == 40.5)

    {

        Console.WriteLine("Correct! Wow, I didn't really think you would figure it out!");

        break;

    }

}

我希望在输入数字时只显示一个字符串,并且我希望它能够对应于它是低于还是高于特定数字。


慕容3067478
浏览 112回答 2
2回答

慕标5832272

这条线有几个问题:numberguess&nbsp;=&nbsp;Console.Read();首先,它返回一个 int,因此它永远不会返回 40.5。此外,它一次读取一个字符,包括通过 Enter 键输入的字符,因此当您键入 40 并按 Enter 时,它会读取“4”,然后是“0”,然后是“\r”,最后是“\n”(将这些字符转换为字符到整数)。这就是它显示四条消息的原因。相反,您必须读取在 Enter 之前键入的所有内容Console.ReadLine(),然后将其(字符串)转换为双精度型。所以最后你必须这样做:numberguess&nbsp;=&nbsp;double.Parse(Console.ReadLine());

萧十郎

Console.Read() 将单个字符读取为 int。如果您试图获取用户在按 Enter 键之前输入的内容,请读取当前行,然后从中解析一个整数。int.Parse(Console.ReadLine());
随时随地看视频慕课网APP
我要回答