为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕容3067478 2023-07-09 16:33:21
我的代码多次输出相同的字符串。例如,输入 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;    }}我希望在输入数字时只显示一个字符串,并且我希望它能够对应于它是低于还是高于特定数字。
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

这条线有几个问题:

numberguess = Console.Read();

首先,它返回一个 int,因此它永远不会返回 40.5。此外,它一次读取一个字符,包括通过 Enter 键输入的字符,因此当您键入 40 并按 Enter 时,它会读取“4”,然后是“0”,然后是“\r”,最后是“\n”(将这些字符转换为字符到整数)。这就是它显示四条消息的原因。

相反,您必须读取在 Enter 之前键入的所有内容Console.ReadLine(),然后将其(字符串)转换为双精度型。所以最后你必须这样做:

numberguess = double.Parse(Console.ReadLine());


查看完整回答
反对 回复 2023-07-09
?
萧十郎

TA贡献1815条经验 获得超13个赞

Console.Read() 将单个字符读取为 int。如果您试图获取用户在按 Enter 键之前输入的内容,请读取当前行,然后从中解析一个整数。

int.Parse(Console.ReadLine());


查看完整回答
反对 回复 2023-07-09
  • 2 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信