Итак, у меня здесь есть код, и я пытаюсь получить максимальное и минимальное значение из строки («1 2 3 4 5 6 66»), и когда я попытался создать массив символов из этой строки и получить из него максимум и min я получаю 54 как максимум и 32 как минимум. КАК?
static void Main(string[] args)
{
HighAndLow("1 2 3 4 5 6 66");
}
public static string HighAndLow(string numbers)
{
char[] liczby = numbers.ToArray();
int max = liczby.Max();
int min = liczby.Min();
Console.WriteLine($"{max} {min}");
return $"{max} {min}";
}
Вы читаете соответствующие целочисленные значения символов. Вероятно, вы захотите разбить строку, а затем разобрать каждый элемент этого массива на целые числа.





Смотри сюда
Вы увидите, что символ 'c' является десятичным числом 54.
и что " " (пробел) имеет десятичное значение 32
Вы получаете коды символов, а не значения.
Сдача
char[] liczby = numbers.ToArray();
к чему-то вроде
char[] temp = numbers.Split(' ');
int[] liczby = temp.Select(c => int.parse(c)).ToArray();
using System;
using System.Collections.Generic;
using System.Linq;
namespace stack
{
internal class Program
{
static void Main(string[] args)
{
HighAndLow("1 2 3 4 5 6 66");
}
static string HighAndLow(string numbers)
{
if (numbers.Length > 0)
{
var listnumbers = numbers.Split(' ');
var max = int.MinValue;
var min = int.MaxValue;
foreach (var number in listnumbers)
{
var ent = int.Parse(number);
max = ent <= max ? max : ent;
min = ent >= min ? min : ent;
}
Console.WriteLine("max :"+max+" min: "+min);
return $"{max} {min}";
}
return "empty string";
}
}
}
или просто заменить:
char[] liczby = numbers.ToArray();
с :
var temp = numbers.Split(' ');
int[] liczby = temp.Select(c => int.Parse(c)).ToArray();
Потому что это значения символов ASCII.