C# 如何显示数组的最大值和最小值
首先,这是一个家庭作业,我有点麻烦,希望得到一些建议。到目前为止,我已经创建了这个应用程序,从用户那里获取10个输入值,并将它们存储到一个数组中。我将数组传递给SmallAndLarge方法,在该方法中,它显示使用Sort()终止10个值中的最小值和最大值,但现在我必须显示用户输入的10个值中的最小值和最大值,并且遇到了问题。任何帮助都会很好 还有一个问题,我注意到如果输入值1到10,当数组排序和显示时,10将在2之前,在1之后。为什么会这样C# 如何显示数组的最大值和最小值,c#,arrays,methods,input,C#,Arrays,Methods,Input,首先,这是一个家庭作业,我有点麻烦,希望得到一些建议。到目前为止,我已经创建了这个应用程序,从用户那里获取10个输入值,并将它们存储到一个数组中。我将数组传递给SmallAndLarge方法,在该方法中,它显示使用Sort()终止10个值中的最小值和最大值,但现在我必须显示用户输入的10个值中的最小值和最大值,并且遇到了问题。任何帮助都会很好 还有一个问题,我注意到如果输入值1到10,当数组排序和显示时,10将在2之前,在1之后。为什么会这样 namespace SmallAndLarge {
namespace SmallAndLarge
{
class Program
{
static void Main()
{
int found = 0;
string[] numbers = new string[10];
for (int i = 0; i < numbers.Length; i++)
{
Console.Write("Enter ten numbers --> ");
numbers[i] = Console.ReadLine();
}
SmallestAndLargest(numbers);
}
public static int SmallestAndLargest(string[] numbers1)
{
int x;
Array.Sort(numbers1);
for (x = 0; x < numbers1.Length; ++x)
Console.Write("{0} ", numbers1[x]);
return x;
}
}
}
namespace SmallAndLarge
{
班级计划
{
静态void Main()
{
int=0;
字符串[]数字=新字符串[10];
for(int i=0;i”;
数字[i]=Console.ReadLine();
}
小型和大型(数字);
}
公共静态int SmallestAndLargest(字符串[]numbers1)
{
int x;
Array.Sort(numbers1);
对于(x=0;x
您将数字作为字符串。这就解释了为什么“10”
排在“2”
之前,这与“am”
按字母顺序排在“i”
之前的原因相同。“10”
的第一个字符是'1'
,位于'2'
之前
因此,在对数组排序或搜索max-og-min值之前,需要将字符串转换为某种数字类型。例如,它可以是int
类型。您可以将它们保存在类型为int[]
的数组中,而不是string[]
的数组中
要将Console.ReadLine
提供的字符串转换为int
,请使用int.Parse
或int.TryParse
方法的重载
如果允许用户键入非整数,如3.14
,则可以使用decimal
而不是int
,将数字作为字符串。这就解释了为什么“10”
排在“2”
之前,这与“am”
按字母顺序排在“i”
之前的原因相同。“10”
的第一个字符是'1'
,位于'2'
之前
因此,在对数组排序或搜索max-og-min值之前,需要将字符串转换为某种数字类型。例如,它可以是int
类型。您可以将它们保存在类型为int[]
的数组中,而不是string[]
的数组中
要将Console.ReadLine
提供的字符串转换为int
,请使用int.Parse
或int.TryParse
方法的重载
如果允许用户键入非整数,如3.14
,则可以使用decimal
而不是int
,看起来您正在迭代数组。我会这样做:
创建两个int变量(分别为小变量和大变量)
将它们都设置为数组的第一个元素
通过元素循环李>
对于每个元素[i],(使用int.Parse()
或等效工具将元素转换为int)
如果元素[i]>大,则大=元素[i];如果元素[i]
如果只需要min和max,则不需要排序。我会将int存储到和int数组中,而不是字符串数组,在用户输入值时进行转换。这样,当输入无效值时,您的程序就会立即失败。看起来您正在对数组进行迭代。我会这样做:
创建两个int变量(分别为小变量和大变量)
将它们都设置为数组的第一个元素
通过元素循环李>
对于每个元素[i],(使用int.Parse()
或等效工具将元素转换为int)
如果元素[i]>大,则大=元素[i];如果元素[i]
如果只需要min和max,则不需要排序。我会将int存储到和int数组中,而不是字符串数组,在用户输入值时进行转换。这样,当输入无效值时,您的程序将立即失败。您可以使用Linq
来使用Min/Max来强制转换并返回最大/最小的
string[] numbers = new string[] {"1","2","3","15","30","7" };
var converted = numbers.Select(int.Parse);
int largest = converted.Max();
int smallest = converted.Min();
您可以使用Linq
来使用Min/Max来强制转换和返回最大/最小的
string[] numbers = new string[] {"1","2","3","15","30","7" };
var converted = numbers.Select(int.Parse);
int largest = converted.Max();
int smallest = converted.Min();
这里有一个非常简单但冗长的答案。将值添加到列表中,并使用最小/最大返回值。您已经在使用for循环遍历列表,没有理由重复两次
static void Main(string[] args)
{
string[] StringValues = new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10","Not Number" };
List<int> ConvertedStrings = new List<int>();
foreach (string S in StringValues)
{
ConvertedStrings = ParseStringToInt(S, ConvertedStrings);
}
Console.WriteLine();
Console.WriteLine("Max Value: " + ConvertedStrings.Max().ToString());
Console.WriteLine("Min Value: " + ConvertedStrings.Min().ToString());
Console.ReadLine();
}
static private List<int> ParseStringToInt(string Input, List<int> ConvertedStrings)
{
int ConvertedValue = 0;
if (int.TryParse(Input, out ConvertedValue))
{
Console.WriteLine(Input + " sucessfully parsed and added...");
ConvertedStrings.Add(ConvertedValue);
return ConvertedStrings;
}
else
{
Console.WriteLine(Input + " failed to parse...");
}
return ConvertedStrings;
}
static void Main(字符串[]args)
{
字符串[]StringValues=新字符串[]{“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“非数字”};
List ConvertedStrings=新列表();
foreach(StringValues中的字符串S)
{
ConvertedStrings=ParseStringToInt(S,ConvertedStrings);
}
Console.WriteLine();
WriteLine(“最大值:+ConvertedStrings.Max().ToString());
WriteLine(“最小值:+ConvertedStrings.Min().ToString());
Console.ReadLine();
}
静态私有列表ParseStringToInt(字符串输入,列表转换字符串)
{
int ConvertedValue=0;
if(int.TryParse(输入,输出转换值))
{
WriteLine(输入+“成功解析并添加…”);
ConvertedStrings.Add(ConvertedValue);
返回转换字符串;
}
其他的
{