如何编写一个控制台应用程序来确定给定系列整数中的最大元素

时间:2017-12-21 10:42:14

标签: c#

编写一个控制台应用程序,用于确定给定整数系列中的最大元素。 这些数字是逐个输入的,应用程序将逐个读取它们,直到用户输入数字0.当输入数字0时,应用程序知道字符串中的所有数字都已输入并显示最大数字

数字0也是字符串的一部分,如果它是用户输入的最大数字,则应用程序将返回0.

示例:

输入:

24 1 -3 3 -1 0 控制台将显示:

24

我的代码是

 string[] numbers = new string[10];

        for(int i = 0; i < numbers.Length; i++){
            numbers[i] = "0";
        }

        int biggest = 0;

        for (int i = 0; i < numbers.Length; i++)
        {
            numbers[i] = Console.ReadLine();
            if(numbers[i] == "0")
            {
                break;
            }

我无法弄清楚如何继续解决此问题。我是以正确的方式开始的吗?请帮忙!

1 个答案:

答案 0 :(得分:0)

我会使用类型List<int>的列表而不是字符串数组。这是我的代码:

List<int> numbers= new List<int>();
int a;
while(Int32.TryParse(Console.ReadLine(), out a))
{
    if (a == 0)
        break;
    else
        numbers.Add(a);
}
Console.WriteLine(numbers.Max());
Console.Read();

这种方法的第一个优点是你没有给你一个字符串数组的用户输入限制(在你的情况下只有10个数字)。第二个好处是,您可以在类型.Max()的列表上调用List<int>方法,该列表为您提供存储在列表中的最大值。

如果您想用字符串数组解决问题,可以使用以下代码:

string[] numbers = new string[10];
int biggest = 0;
int a = 0;
bool isNumber = true;
for (int i = 0; i < numbers.Length; i++)
{
    numbers[i] = Console.ReadLine();

    isNumber = Int32.TryParse(numbers[i], out a);

    if (i == 0)// in case that the first number is negative
    {
        isNumber = Int32.TryParse(numbers[i], out biggest);
    }

    if (numbers[i] == "0" || !isNumber)
    {
       break;
    }
    else
    {
        if (biggest < a)
            biggest = a;
    }
 }
 Console.WriteLine(biggest);
 Console.Read();