Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2019, 19:00   #1
lisica198808
Пользователь
 
Регистрация: 06.11.2012
Сообщений: 64
По умолчанию Запись из текстового файла в массив типа int

Всем доброго вечерочка...подскажите пожалуйста по заданию..как исправить ошибку. Из файла берутся значения, в каждой строке нужно брать только те, которые разделены пробелом,и необходимо их записать в массив типа int. Код написала, но на строку
Код:
 chislo = Array.ConvertAll(w, Convert.ToInt32)
выбивает ошибку System.FormatException: "Входная строка имела неверный формат.".
Как правильно записать значения в массив int? не могу понять что не так, чтоб дальше выполнять задания мне нужен этот массив(((
Код:
            int[] chislo = null;
            string[] Mass = File.ReadAllLines(@"D:\УЧЕБА\test_set.txt", Encoding.Default);
            int stroka = Mass.Length;
            // Console.WriteLine("Количество строк в файле: " + stroka + "\n");// + "Вторая строка: " + Mass[1]); 

            for (int s = 0; s < stroka; s++)
            {
                //   Console.WriteLine("Строка: " + s);
                string[] w = new string[Mass[s].Length];//количество значений в массиве 
                w = Mass[s].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
             // int[] chislo = new int[w.Length - 1];//массив будущих чисел 
                //for (int i = 1; i < w.Length -1 ; i++)
                //{
                //    Console.WriteLine(string.Join(" ", w[i]));//выведем текущие числа 
                //}
                chislo = Array.ConvertAll(w, Convert.ToInt32);
lisica198808 вне форума Ответить с цитированием
Старый 31.03.2019, 22:33   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

А что на входе? Может там не все в int конвертируется
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 02.04.2019, 20:58   #3
lisica198808
Пользователь
 
Регистрация: 06.11.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
А что на входе? Может там не все в int конвертируется
В файле test_set.txt записаны эти данные:
4;-2;6; -1 1 3 5
6;-8;7; -2 4 -6 -1 1 8
-4;-2;6; -1 1 3 5 -2
"восемь";-13;87; -2 24 12 -7 56 -1 -7 76
2;"три";77; 3 54
2;-3;"восемь"; -2 0
2;2;32; 14 28
3;-2;-7; -4 -1 -6
3;-2;101; -2 0 45
значения, где точка с запятой нужны для другого, и выбрать их не проблематично получилось, нужны значения разделенные пробелами,после пробелов..
Не пойму в чем проблема, как сохранить их в массив, ведь на экран они выводятся, если на экран выводить.. выше в комментах часть,здесь
Код:
 for (int i = 1; i <= w.Length -1 ; i++)
                   Console.WriteLine(string.Join(" ", w[i]));//выведем текущие числа
lisica198808 вне форума Ответить с цитированием
Старый 02.04.2019, 21:46   #4
lisica198808
Пользователь
 
Регистрация: 06.11.2012
Сообщений: 64
По умолчанию

просто кода пишу
Код:
 string[] Mass = File.ReadAllLines(@"D:\УЧЕБА\магистр\3 семестр\тестирование\labka2\labka2\bin\Debug\test_set.txt", Encoding.Default);
            int stroka = Mass.Length;
        
            for (int s = 0; s < stroka; s++)
            {
                Console.WriteLine("Массив: " + s);
                string[] w = new string[Mass[s].Length];//количество значений в массиве 
                w = Mass[s].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                 int[] chislo = new int[w.Length - 1];//массив будущих чисел 
                for (int i = 1; i <= w.Length - 1; i++)
                chislo = w[i].Select(n => int.Parse(n)).ToArray();
                   

            }
            Console.ReadKey();
Выбивает ошибку на строку
Код:
 chislo = w[i].Select(n => int.Parse(n)).ToArray();
, подсвечивает и пишет Аргумент 1: не удается преобразовать из "char" в "string"... Запуталась уже...
lisica198808 вне форума Ответить с цитированием
Старый 03.04.2019, 11:25   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

если я правильно Вас понял, то попробуйте такой код:
Код:
	public static void Main(string[] args)
	{
            // string[] Mass = File.ReadAllLines(@"D:\УЧЕБА\test_set.txt", Encoding.Default);
            string[] Mass = File.ReadAllLines(@"test_set.txt", Encoding.Default);
            StringBuilder AllDigitsWithSpaces = new StringBuilder();
            foreach (var sline in Mass) {
            	string[] items = sline.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            	foreach (var s in items) {
            		if(s.Contains(" ")){
            			AllDigitsWithSpaces.Append(" ").Append(s).Append(" ");
            		}
            	}
            }

            int[] Numbers = AllDigitsWithSpaces.ToString()
            	.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
            	.Select(n => int.Parse(n)).ToArray();

            	
            for (int i = 0; i < Numbers.Length; i++) {
            	Console.WriteLine("{0} число = {1}", i, Numbers[i]);
            }
            
            Console.WriteLine("Press any key...");
            Console.ReadKey();
	}
обратите внимание, что из строк выбираются только те строки, где среди чисел есть пробелы.
Побочные эффекты.
1) если будет строчка: 4;-2;6;5
то в ней нет пробелов и ничего не возьмётся
2) если - ВДРУГ, пробел появится в первых элементах, то они, соответственно, попадут в парсер, хотя не уверен, что должны попасть.

p.s. может быть, всегда, после разделения строки по ";" брать последний элемент?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из текстового файла данных для типа запись, Pascal. anton_guitar Помощь студентам 1 12.05.2015 20:59
Запись данных из текстового файла в контейнер list romasimeiz Общие вопросы C/C++ 0 02.04.2014 15:19
Чтение и запись (изменение) текстового файла Yurchik Общие вопросы Delphi 1 10.11.2012 15:13
запись текстового файла в stringgrid Egorza Помощь студентам 1 11.05.2012 00:39
Запись типизированного файла из текстового. Lubawa Паскаль, Turbo Pascal, PascalABC.NET 18 05.11.2011 11:27