Форум программистов и сисадминов CyberForum.ru
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум Форум программистов > Форум .NET > Форум C# .NET
Восстановить пароль Регистрация

Ответ Создать новую тему
 
Старый 14.01.2010, 15:45   #1
Dialord
Новичок
 
Аватар для 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, 16:17   #2
SSV
Заблокирован
 
Регистрация: 21.12.2009
Сообщений: 3,483
Репутация: 552 (538)
Лучшие ответы: 9
Преобразование string в int

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

а чем вас int.TryParse() не устраивает?
Старый 14.01.2010, 17:08
Google
Объявления
Старый 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
Новичок
 
Аватар для Dialord
 
Регистрация: 14.01.2010
Сообщений: 32
Репутация: 8 (8)
Лучшие ответы: 1
Преобразование string в int

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

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

TryParse преобразует строку в эквивалентное ей число со знаком. метод вернет нужное вам значение если преобразование было успешным либо нул в случае неудачи. конкретнее можно посмотреть в мсдн.
Старый 06.05.2011, 06:57   #9
aleks_pilipenko
)))
 
Аватар для aleks_pilipenko
 
Регистрация: 31.12.2009
Сообщений: 1,823
Репутация: 576 (160)
Записей в блоге: 1
Лучшие ответы: 6
Преобразование 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
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Автор
С++ для начинающих Преобразование string в int
Помогите пожалуйста с преобразованием string к типу int, быть может не напрямую но хоть как нибудь, очень надо!!!
xam max
C# для начинающих Преобразование String в Int
Помогите пожалуйста разобраться. Задача такая: на входе целое 6-значное число, нужно разбить его на две половины по 3 элемента, а эти 3 ещё раз разложить на составляющие, после с ними проделываются разные математические действия (тоесть все полученые значения должны быть преобразованы из String...
skimitar
С++ для начинающих Преобразование string в int
Всем привет, нужно преобразовать string в int #include <iostream> #include <stdlib.h> #include <string.h> #include <stdio.h> using namespace std;
seruy-t
C# для начинающих Преобразование string[] в int[]
Не могу найти по поиску.. Подскажите как преобразовать массив строк в массив целочисленных значений. string в int Добавлено через 3 минуты Извините, нашёл, удалите темку. int f = m.Select(ch => int.Parse(ch.ToString())).ToArray();
KAJIb9IH
С++ для начинающих преобразование string в int
нужно текст (string) из textBox преобразовать в число (int)
ilya_123
Опции темы

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

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