**我有这个问题需要在 C# 中解决:
用户从控制台输入整数(不是固定数量的 int,而是无限数量的 int,想多少就多少),当用户输入值 0(零)时,程序应该停止并应该打印最大的值字符串中的数字。
示例
用户从控制台输入这个整数:
4
-5
22
6
-99
7
0
结果应该是:
22
这是我到目前为止的代码:
using System;
using System.Linq;
public class TestNumericDataTypesOperations
{
public static void Main()
{
string[] a = new string[100];
int max = int.MinValue;
for (int i = 0; i < a.Length; i++)
{
a[i] = Console.ReadLine();
if (a[i] == "0")
{
break;
}
max = a[i].Max();
}
Console.WriteLine(max);
}
}
如果我输入的第一件事是零,它会打印“–2147483648”。
对于打印“55”中的 6,4,-9,7,0。
谢谢!**
-2147483648 来自 int.min -> 这是您之前分配的值。 根据您的代码,一旦达到 0,您就会中断循环,然后再将任何内容分配给变量。 然后你打印-2147483648
我们来提取一个输入
int
值的方法:
private static int ReadInt(string prompt = default) {
if (!string.IsNullOrWhiteSpace(prompt))
Console.WriteLine(prompt);
while (true) {
if (int.TryParse(Console.ReadLine(), out int result))
return result;
Console.WriteLine("Not a valid integer value. Please, try again.");
}
}
然后你可以实现循环,注意,你不需要任何数组:
public static void Main() {
int maxValue = int.MinValue;
while (true) {
var value = ReadInt();
if (value == 0)
break;
else
maxValue = Math.Max(value, maxValue);
}
Console.WriteLine(maxValue);
}