gpt4 book ai didi

c# - 简单的 C# 程序似乎无缘无故地跳过代码

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

我今天早上参加了 A-Level AQA Computing 考试,当我的代码由于未知原因没有运行代码行时,其中一个编程问题让我感到困惑。我试着在家里重新创建它,看看它是否是出于某种原因的一次性错误,但它导致了同样奇怪的结果。

问题是要求使用一些给定的伪代码编写一个程序,这是我内存中最接近的。有问题的程序被设计为采用两位数;1)将两位数相加,然后将结果的两位数相加,直到只剩下一位数或者2) 将两位数相乘,一直乘到只剩下一位数。我不记得这个过程的名称,但你明白了。 (例如 77 -> 7+7 = 14、1+4 = 5。在 2 个回合/周期中答案将是 5。)

这是代码;

class Program
{
static void Main(string[] args)
{
int count = 0;
int value;
string mode;
Console.WriteLine("Please enter a value: ");
value = Console.Read();
Console.WriteLine("Please enter the mode (a or m): ");
mode = Console.ReadLine();
while (value > 9)
{
if (mode == "a")
{
value = (value / 10) + (value % 10);
}
else
{
value = (value / 10) * (value % 10);
}
count += 1;
}
Console.WriteLine("After " + count + " turns, the value is " + value);
}
}

所以它看起来很好,但是当我以 45 的测试值运行它时,这就是输出;

Please enter a value:
45
Please enter the mode (a or m):
After 2 turns, the value is 0

这一切都是在没有给用户进入模式的机会的情况下发生的。

起初看起来代码在分配的值大于 9 后直接跳转到 while 循环。虽然这让我感到困惑,但我尝试通过将用户输入分配给不同的值(tempvalue)来修复,并且然后在他们选择了一种模式后将其分配给 value 。然而,同样的事情发生了。

我觉得解决方案将是一些非常简单且愚蠢的错误,我还没有发现,但我在任何地方都找不到任何错误或可能的原因。

这让我发疯!!感谢您的帮助。

谢谢:)

免责声明:这不是我想在考试中作弊,考试已经结束,所有作业都已完成,所以这是不可能的。我真的很好奇我做错了什么导致发生这种情况,并且很想知道解决方案。

最佳答案

您正在使用 Console.Read 作为数字,而不是 ReadLineRead只读取单个字符,直到下一个换行符(如 ReadLine 所做的那样)。因此,当输入 45↵ 时,您返回的只是 4,下一次调用 ReadLine 将获得 5.

此外,value 将是字符 4 的 Unicode 代码点,即 52。因此您可能应该将该行更改为

value = int.Parse(Console.ReadLine());

这就解决了这两个问题(或根据需要添加错误处理)。

关于c# - 简单的 C# 程序似乎无缘无故地跳过代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37656658/

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