这是关于编译器/语言如何处理这个问题的问题。 请使用以下代码:
Console.WriteLine("Enter some numbers separated by ",");
var numbers = Console.ReadLine();
var splitNumber = numbers.Split(',');
var maxNumber = splitNumber.Max();
Console.WriteLine("highest is: " + maxNumber);
输入一个字符串,如" 1,2,3,4,5"将输出5作为最大数字。 但是,使用" 1,2,3,55,6"输出6.然而," 33,1,4,1" 4.奇怪," 33,1,2,3"给出33。
我知道使用循环有更好/更简单/不同的方式。我完全错过了编译器如何处理这些字符串来确定输出的东西。有人可以解释一下吗?或者提供一个参考来查找它?
答案 0 :(得分:8)
“max”字符串是字典顺序中的最后一个字符串,即您在字典中列出它们的顺序
您需要使用例如int.Parse,如果你想要数字最大值,你可以将你的字符串转换为数字类型。
答案 1 :(得分:8)
在字符串比较中,6 > 55
返回True。
执行此操作,使用Split()
扩展方法将字符串拆分为数组,然后使用{em>返回LINQ中可用的通用序列中的最大值的MAX()
函数/ p>
string x = "1,2,3,55,6";
var array = x.Split(',');
Console.WriteLine("highest is: " + array.Max(c => int.Parse(c)));
输出:
highest is: 55
答案 2 :(得分:1)
您需要将数字作为列表或数组中的整数进行比较。
var <int> Numbers = new List<int>();
while(String had not ended)
{
var splitNumber = (int) numbers.Split(',');
Numbers.Add(splitNumner);
}
var maxNumber = Numbers.Max();
Console.WriteLine("highest is: " + maxNumber);
答案 3 :(得分:1)
你可以这样做,使用ConvertAll将字符串数组转换为int数组,然后找到最大值
Console.WriteLine("Enter some numbers separated by ");
var numbers = Console.ReadLine();
var splitNumber = numbers.Split(',');
int[] myInts = Array.ConvertAll(splitNumber, int.Parse);
var maxNumber = myInts.Max();
Console.WriteLine("highest is: " + maxNumber);
答案 4 :(得分:1)
我尝试使用相同的输入编译代码。我也得到相同的输出,但是当你尝试在字符串数组上执行.Max()操作时,它只是比较第二个数组中每个条目的第一个字符。
如果输入为 1,2,3,55,6 ,您将获得 6 的输出,因为当您比较所有数字并且第一个数字<强> 6 是最大的。但是,如果您将输入更改为 1,2,3,75,6 ,那么您将获得 75 的输出,因为 7 是列表中所有数字的最大第一位数。
string str = "1,2,3,75,6";
var splitNumber = str.Split(',');
var maxNumber = splitNumber.Max();
与所有其他答案一样,您需要将字符串数组转换为整数数组,然后应用它。
答案 5 :(得分:1)
答案编译器如何处理这些字符串以确定输出?:
由于这些是字符串,因此会检查字符串相等性。 编译器获取每个字符串值并将其与逐个char进行比较。它在第一次出现错配时推断出相等(例如,55对6,5,小于6,因此55小于6)
答案 6 :(得分:1)
您可以使用:
Console.WriteLine("Enter a series of number separated by comma and I will tell you which one is the biggest, cool!");
var input = Console.ReadLine().Split(',');
Console.WriteLine("Biggest is :" + input.Max(c => int.Parse(c)));
答案 7 :(得分:0)
你也可以这样做:
var splitNumber = numbers.Split(',').Select(c=>Convert.ToInt32(c)).Max();
Console.WriteLine("highest is: " + splitNumber);
答案 8 :(得分:0)
将Var更改为Int64
Int64 maxNumber = Int64.Parse(splitNumber.Max());