Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > Форум Форум программистов > Форум .NET > Форум C# .NET
Восстановить пароль Регистрация

Ответ Создать новую тему
 
14.01.2010, 15:45   #1
Dialord
Новичок
Регистрация: 14.01.2010
Сообщений: 32
Репутация: 8 (8)
Лучшие ответы: 1
Преобразование string в int / C# .NET

Здравствуйте, прошу помощи со следующей проблемой: при считывании массива чисел из текстового файла и преобразования его из строки в Int, числа получаются некорректные. Вот код:
Код C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
private void button1_Click(object sender, EventArgs e)
{
      System.IO.StreamReader data_trance = new System.IO.StreamReader("H:\\test.txt");
      string str = data_trance.ReadLine();
      int kol = str.Length;
      int x = 0;
      int znak = 0;
      int i;
      int j = 0;
      int p = 0;
      int [] mas = new int[4];
      for (i = 0; i < 4; i++)
      { mas[i] = 0;
      }
      for (i = 0; i < kol; i++)
      { if (str[i] == '-')
            { znak = 1;
            }
      else
      { if (str[i] != ' ')
            { j = Convert.ToInt32( str[i]);
            x = x * 10+j;
            }
        else
            { if (znak != 0)
                  { mas[p] = 0 - x;
                     znak = 0;
                     x = 0;
                     p++;
                  }
              else
                  { mas[p] = x;
                     x = 0;
                     p++;
                  }
            }
      }
      }
}
Подскажите, что не так. Этот код нужен для программы к курсовому проекту. так что время поджимает. За ранее благодарен откликнувшимся!
14.01.2010, 15:45
AdAgent
Объявления
14.01.2010, 16:17   #2
SSV
Заблокирован
Преобразование string в int

Напиши полностью условие задачи, а то у тебя здесь многое не понятно. Например, зачем заполнять массив нулями, если в нем и так нули после объявления
Цитата Сообщение от Dialord Посмотреть сообщение
int [] mas = new int[4];
for (i = 0; i < 4; i++)
{ mas[i] = 0;
}
Другие темы раздела
C# формула
Нужно сравнить две формулы%-)
C# Виснет консоль
Всем привет. Я недавно начил изучать с# исрп у меня Microsoft Visual C# 2008 Express Edition а винда xp sp2. Сейчас пробую делать консольные приложения (для учебы) но часто они виснут те сама консоль не появляется а исрп виснет, тока уничтожив приложение "имя".vshost.exe диспетчером задач можно...
14.01.2010, 16:48  [ТС]   #3
Dialord
Новичок
Регистрация: 14.01.2010
Сообщений: 32
Репутация: 8 (8)
Лучшие ответы: 1
Преобразование string в int

Да, здесь ты прав - это действительно лишнее. Задача как таковая заключается в том, чтобы считать исходные данные из текстового файла. Это лишь кусочек всей программы. В текстовом файле находятся коэффиценты системы уравнений. Уже 6 часов просидел с, казалось бы, элементарным кодом, но никак не могу осуществить задуманное. На C# только перехожу, раньше на С++ писал.

Добавлено через 6 минут
Я тут пришел к решению проблемы, хоть и коряво, но работает. Сделал следущее: заменил оператор
Код C#
1
j = Convert.ToInt32( str[i]);
на такой
Код C#
1
2
3
4
5
6
7
8
9
10
11
12
13
                        switch (str[i])
                        {
                            case '0': j = 0; break;
                            case '1': j = 1; break;
                            case '2': j = 2; break;
                            case '3': j = 3; break;
                            case '4': j = 4; break;
                            case '5': j = 5; break;
                            case '6': j = 6; break;
                            case '7': j = 7; break;
                            case '8': j = 8; break;
                            case '9': j = 9; break;
                        }                  
может и убого, зато работает. Вот правда если туда другой символ пролезет - будет error )) Может default еще прикрутить?
P.S. Если кто может предложить что-то дельное - буду только рад.
14.01.2010, 17:08   #4
mitsky
Форумчанин
Регистрация: 31.12.2009
Сообщений: 82
Репутация: 31 (31)
Лучшие ответы: 7
Преобразование string в int

а чем вас int.TryParse() не устраивает?
14.01.2010, 17:08
AdAgent
Объявления
14.01.2010, 17:17   #5
hardworker
Форумчанин
Регистрация: 12.01.2010
Сообщений: 51
Репутация: 14 (14)
Лучшие ответы: 1
Преобразование string в int

Код C#
1
2
3
4
5
6
7
8
            System.IO.StreamReader data_trance = new System.IO.StreamReader("C://test.txt");
 
            string str = data_trance.ReadLine();
            string[] numbers_in_string = str.Split(' ', '\n'); // Разбиваем текст файла на строки между знаками ' ' И переноса строки '\n'
            int[] numbers = new int[numbers_in_string.Length]; 
 
            for(int j = 0; j < numbers_in_string.Length; j++)
                numbers[j] = Convert.ToInt32(numbers_in_string[j]);
А с помощью TryParse можно проверить правильность информации в хранимом файле
14.01.2010, 17:18  [ТС]   #6
Dialord
Новичок
Регистрация: 14.01.2010
Сообщений: 32
Репутация: 8 (8)
Лучшие ответы: 1
Преобразование string в int

Цитата Сообщение от mitsky Посмотреть сообщение
а чем вас int.TryParse() не устраивает?
А можно поподробнее с этого места, как именно оператор работает?
14.01.2010, 17:23  [ТС]   #7
Dialord
Новичок
Регистрация: 14.01.2010
Сообщений: 32
Репутация: 8 (8)
Лучшие ответы: 1
Преобразование string в int

hardworker, спасибо огромное! Отличное предложение, с Вашего позволения я его и использую.
14.01.2010, 17:40   #8
mitsky
Форумчанин
Регистрация: 31.12.2009
Сообщений: 82
Репутация: 31 (31)
Лучшие ответы: 7
Преобразование string в int

TryParse преобразует строку в эквивалентное ей число со знаком. метод вернет нужное вам значение если преобразование было успешным либо нул в случае неудачи. конкретнее можно посмотреть в мсдн.
06.05.2011, 06:57   #9
aleks_pilipenko
)))
Регистрация: 31.12.2009
Сообщений: 1,931
Репутация: 593 (170)
Записей в блоге: 1
Лучшие ответы: 7
Преобразование string в int / C# .NET

Код C#
1
2
3
            string str = Encoding.ASCII.GetString(bytesP);
            byte[] Bytes = Encoding.ASCII.GetBytes(str);
            string sss = Encoding.ASCII.GetString(Bytes);
06.05.2011, 06:57
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
C++ Преобразование string в int
у меня вот какая проблема.Я пытаюсь считывать строку,искать в ней числа и записывать их в двумерный массив целых чисел,подсчитывая их кол-во.Так вот все советуют использовать функцию atoi(),но проблема в том что если циклически считывать строки,скажем 5 раз и при этом увеличивать число в строке на...
С++ для начинающих Diamind 31.03.2014 02:15
C# Преобразование String в int[]
Помогите,пожалуйста преобразовать! есть строка key1 = 04589621 её нужно преобразовать в массив "интовский". что делаю неправильно? string key1 = textBox9.Text; int key = new int; for (int i = 0; i < key1.Length; i++)
C# для начинающих cathrin241 25.09.2012 21:52
C++ Преобразование string в int
Помогите пожалуйста с преобразованием string к типу int, быть может не напрямую но хоть как нибудь, очень надо!!!
С++ для начинающих xam max 21.07.2012 04:11
C# Преобразование String в Int
Помогите пожалуйста разобраться. Задача такая: на входе целое 6-значное число, нужно разбить его на две половины по 3 элемента, а эти 3 ещё раз разложить на составляющие, после с ними проделываются разные математические действия (тоесть все полученые значения должны быть преобразованы из String...
C# для начинающих skimitar 08.05.2012 16:11
C++ преобразование string в int
нужно текст (string) из textBox преобразовать в число (int)
С++ для начинающих ilya_123 27.01.2012 15:39
Опции темы

Текущее время: 11:23. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.