黑马程序员——让用户输入数组元素值的方法

时间:2021-11-20 12:06:49

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

  看C#基础最后几个视频时有一道练习是要求用方法实现找出一个int类型数组中最大值和最小值。因为没有给定int类型数组,我就想到让用户来输入数组元素的值,然后找出其中最大和最小值,而且这也用一个方法来实现,只是不知道这样数组元素个数由用户输入来决定的有没其它问题,记得C语言中数组元素的个数在定义时就应该确定,可是写出来的代码这些编译和运行都没有问题,C#中数组定义时元素的个数是可以用变量的么,还是因为其它原因,看来值得探究一下。而且还有一个问题,就是返回数组的问题,我没有定义一个数组来接收方法返回的用户输入的数组,怎么就直接返回给了我传的参数数组了呢,我想这应该是传递的数组是引用类型的关系。代码如下:

namespace _03练习
{
class Program
{
static void Main(string[] args)
{
int n;
Console.WriteLine("请输入数组的元素个数!");
while (true)
{
if(int.TryParse(Console.ReadLine(),out n))
{
break;
}
else
{
Console.WriteLine("您输入的不是数字,请重新输入!");
}
}

int[] nums = new int[n];
Evaluation(nums);//调用Evaluation方法给数组元素赋值

int max, min, sum;
sum = Sum(nums, out max, out min);//调用Sum方法求数组元素的和,并返回其中最大值与最小值

Console.WriteLine("数组元素的和为:{0},最大值为:{1},最小值为:{2}", sum, max, min);

Console.ReagKey();
}

/// <summary>
/// 让用户给一个整数数组赋值
/// </summary>
/// <param name="numbers">要赋值的数组</param>
/// <returns>已赋值的数组</returns>
public static int[] Evaluation(int[] numbers)
{
for (int i = 0; i < numbers.Length; i++)
{
Console.WriteLine("请输入{0}个数组元素的值!", i + 1);
if(int.TryParse(Console.ReadLine(),out numbers[i])==false)
{
Console.WriteLine("输入的不是数字,请重新输入!");
i--;
}
}
return numbers;
}

/// <summary>
/// 求数组中所有元素的和
/// </summary>
/// <param name="numbers">数组</param>
/// <param name="max">最大值</param>
/// <param name="min">最小值</param>
/// <returns>数组元素的和</returns>
public static int Sum(int[] numbers, out int max, out int min)
{
int sum = 0;
max = numbers[0];
min = numbers[0];
for (int i = 0; i < numbers.Length; i++)
{
sum += numbers[i];
if (numbers[i] > max)
{
max = numbers[i];
}
if (numbers[i] < min)
{
min = numbers[i];
}
}
return sum;
}

}
}


---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------详细请查看:http://net.itheima.com/