C# 从控制台估算字符串中查找最大 int

问题描述 投票:0回答:2

**我有这个问题需要在 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。

谢谢!**

c# string integer max
2个回答
0
投票

-2147483648 来自 int.min -> 这是您之前分配的值。 根据您的代码,一旦达到 0,您就会中断循环,然后再将任何内容分配给变量。 然后你打印-2147483648


0
投票

我们来提取一个输入

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.