Форум программистов, компьютерный форум CyberForum.ru

C# .NET

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 67, средняя оценка - 4.66
Dialord
8 / 8 / 1
Регистрация: 14.01.2010
Сообщений: 32
#1

Преобразование string в int - C#

14.01.2010, 15:45. Просмотров 8270. Ответов 8
Метки нет (Все метки)

Здравствуйте, прошу помощи со следующей проблемой: при считывании массива чисел из текстового файла и преобразования его из строки в 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++;
                  }
            }
      }
      }
}
Подскажите, что не так. Этот код нужен для программы к курсовому проекту. так что время поджимает. За ранее благодарен откликнувшимся!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2010, 15:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование string в int (C#):

Преобразование IEnumerable<int> в int[] - C#
Существуют два множества, представленные int. Необходимо найти их объединение, пересечение, вычитание. Для этого можно использовать...

Как перевести из string в int? - C#
застопорился на этой вот фигне. кто подскажет?

Как преобразовать string в int? - C#
Как преобразовать строку string в целое число? string s = &quot;5&quot;; int i = (int)(s); Так не получается. Раньше, кажется, как-то...

Преобразование из string[] в string - C#
C# для меня новый язык. string s; // ... s = Environment.GetCommandLineArgs(); // ...Что я не так делаю? Вообсче нет...

как переобразовать строку string в масив int[] - C#
Как переобразовать строку string в масив int?? С утра програмирую башка уже неварит(

Как конвертировать время типа string в тип int? - C#
как конвертировать время типа string в тип int собственно получаю время до завершения типа string и нужно конвертировать в int что бы...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
SSV
Заблокирован
14.01.2010, 16:17 #2
Напиши полностью условие задачи, а то у тебя здесь многое не понятно. Например, зачем заполнять массив нулями, если в нем и так нули после объявления
Цитата Сообщение от Dialord Посмотреть сообщение
int [] mas = new int[4];
for (i = 0; i < 4; i++)
{ mas[i] = 0;
}
Dialord
8 / 8 / 1
Регистрация: 14.01.2010
Сообщений: 32
14.01.2010, 16:48  [ТС] #3
Да, здесь ты прав - это действительно лишнее. Задача как таковая заключается в том, чтобы считать исходные данные из текстового файла. Это лишь кусочек всей программы. В текстовом файле находятся коэффиценты системы уравнений. Уже 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. Если кто может предложить что-то дельное - буду только рад.
mitsky
31 / 31 / 7
Регистрация: 31.12.2009
Сообщений: 82
14.01.2010, 17:08 #4
а чем вас int.TryParse() не устраивает?
hardworker
14 / 14 / 1
Регистрация: 12.01.2010
Сообщений: 51
14.01.2010, 17:17 #5
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 можно проверить правильность информации в хранимом файле
Dialord
8 / 8 / 1
Регистрация: 14.01.2010
Сообщений: 32
14.01.2010, 17:18  [ТС] #6
Цитата Сообщение от mitsky Посмотреть сообщение
а чем вас int.TryParse() не устраивает?
А можно поподробнее с этого места, как именно оператор работает?
Dialord
8 / 8 / 1
Регистрация: 14.01.2010
Сообщений: 32
14.01.2010, 17:23  [ТС] #7
hardworker, спасибо огромное! Отличное предложение, с Вашего позволения я его и использую.
mitsky
31 / 31 / 7
Регистрация: 31.12.2009
Сообщений: 82
14.01.2010, 17:40 #8
TryParse преобразует строку в эквивалентное ей число со знаком. метод вернет нужное вам значение если преобразование было успешным либо нул в случае неудачи. конкретнее можно посмотреть в мсдн.
aleks_pilipenko
)))
604 / 181 / 9
Регистрация: 31.12.2009
Сообщений: 2,616
Записей в блоге: 3
06.05.2011, 06:57 #9
C#
1
2
3
            string str = Encoding.ASCII.GetString(bytesP);
            byte[] Bytes = Encoding.ASCII.GetBytes(str);
            string sss = Encoding.ASCII.GetString(Bytes);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2011, 06:57
Привет! Вот еще темы с ответами:

Выполнить преобразование Color в String - C#
Подскажите, пожалуйста, как можно выполнить преобразование color в string на c#? Добавлено через 2 минуты если поможет дать ответ -...

Библиотека xNet. Преобразование string в CookieDictionary - C#
Ребята, всем привет. Кто работал с этой библиотекой, можете ответить на вопрос, как сформировать кукис? В документации дан такой код ...

Можно ли изменить тип переменной, не создавая новую? Например, из string в int - C#
просто интересно)

.NET 3.x Ошибка "error CS1503". Преобразование из string в T - C#
Всем привет. Собственно, сабж. Вылезает ошибка error CS1503 в 7 строчке: BinList = new MyStream&lt;T&gt;(BinListFileName, FileMode.Create); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.05.2011, 06:57
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru