Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 29.11.2013
Сообщений: 40

Неправильно преобразовывает string в int

02.02.2014, 23:22. Показов 5193. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При попытке конвертировать string в int выводятся неправильные значения.
Я ввожу 123, при этом в ответе мне выводятся 49 50 51.
C#
1
2
3
4
5
6
7
8
9
10
11
        {
            string s = Console.ReadLine();
            int[] IntArray = new int[s.Length];
 
            for (int i = 0; i < s.Length; i++)
            {
                IntArray[i] = Convert.ToInt32(s[i]);
                Console.WriteLine(IntArray[i]);
            }
            Console.ReadKey();
        }
В чем ошибка?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.02.2014, 23:22
Ответы с готовыми решениями:

Не преобразовывает int в string (строку)
string z = null; for (int i = 100000; i &lt; 999999; ++i) { z = i.ToString; } ...

Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population
Здравствуйте! По C# есть задачка, с которой я так и не разобрался :( Задача: Создайте класс Animal. Добавьте поля string...

Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population
Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population. Создание объектов может происходить как без...

19
1615 / 1181 / 552
Регистрация: 08.01.2012
Сообщений: 4,558
02.02.2014, 23:42
49 50 51 - это коды символов "1" "2" "3", а s[i] - это символ а не строка
попробуйте так:
C#
1
Convert.ToInt32(""+s[i]);
1
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
03.02.2014, 01:02
C#
1
2
3
4
5
6
7
8
9
string s = Console.ReadLine();
            int[] IntArray = new int[s.Length];
 
            for (int i = 0; i < s.Length; i++)
            {
                IntArray[i] = int.Parse(s[i].ToString());
                Console.WriteLine(IntArray[i]);
            }
            Console.ReadKey();
1
 Аватар для SKonst
37 / 25 / 15
Регистрация: 14.12.2013
Сообщений: 67
03.02.2014, 02:52
Xenvert,
C#
1
2
3
4
5
6
7
8
9
string s = Console.ReadLine();
            int[] IntArray = new int[s.Length];
 
            for (int i = 0; i < s.Length; i++)
            {
                IntArray[i] = Console.ReadLine(s[i]);
                Console.WriteLine(IntArray[i]);
            }
            Console.ReadKey();
1
1 / 1 / 0
Регистрация: 29.01.2014
Сообщений: 27
03.02.2014, 11:10
Вот всё работает.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = Console.ReadLine();
            int i;
                i = Convert.ToInt32(s);
                  Console.WriteLine(i);
                    Console.ReadKey();
        }
    }
}
1
 Аватар для makedonsky94
45 / 45 / 4
Регистрация: 14.02.2013
Сообщений: 139
03.02.2014, 12:52
Вместо Convert используйте int.Parse(s[i].ToString());
1
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
03.02.2014, 14:28
Цитата Сообщение от SKonst Посмотреть сообщение
IntArray[i] = Console.ReadLine(s[i]);
1
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9670 / 4823 / 762
Регистрация: 17.04.2012
Сообщений: 9,661
Записей в блоге: 14
03.02.2014, 14:34
Цитата Сообщение от makedonsky94 Посмотреть сообщение
Вместо Convert используйте int.Parse(s[i].ToString());
А в чём преимущество?
1
 Аватар для SKonst
37 / 25 / 15
Регистрация: 14.12.2013
Сообщений: 67
03.02.2014, 16:02
-HPR-, извиняюсь, действительно сильно тупанул)
2
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
03.02.2014, 16:16
В этой ситуации просто надо s[i] перевести в string, а затем в int любым из возможных способов.

Добавлено через 3 минуты
Цитата Сообщение от Michael____ Посмотреть сообщение
string s = Console.ReadLine();
* * * * * * int i;
* * * * * * * * i = Convert.ToInt32(s);
работает, потому что s - это стринг. А в примере ТС s[i], а значит char. Если присвоить инту чар, то мы получаем номер символа в таблице Юникода.
2
 Аватар для makedonsky94
45 / 45 / 4
Регистрация: 14.02.2013
Сообщений: 139
03.02.2014, 19:22
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от tezaurismosis Посмотреть сообщение
А в чём преимущество?
Для начинающего - это не перепутать в параметрах строку и символ
3
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
04.02.2014, 01:36
makedonsky94, ну а чтобы совсем запутать:
C#
1
2
3
4
5
6
7
8
9
            string s = Console.ReadLine();
            int[] IntArray = new int[s.Length];
 
            for (int i = 0; i < s.Length; i++)
            {
                IntArray[i] = s[i] - '0';
                Console.WriteLine(IntArray[i]);
            }
            Console.ReadKey();
2
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
04.02.2014, 01:56
Ещё одна модификация=)
C#
1
2
3
4
5
6
7
8
9
            string s = Console.ReadLine();
            int[] IntArray = new int[s.Length];
 
            for (int i = 0; i < s.Length; i++)
            {
                IntArray[i] = Convert.ToInt32(Convert.ToString(s[i]));
                Console.WriteLine(IntArray[i]);
            }
            Console.ReadKey();
Добавлено через 6 минут
или так:
C#
1
2
3
4
5
6
7
8
9
string s = Console.ReadLine();
            int[] IntArray = new int[s.Length];
 
            for (int i = 0; i < s.Length; i++)
            {
                IntArray[i] = s[i];
                Console.WriteLine((char)IntArray[i]);
            }
            Console.ReadKey();
1
1 / 1 / 0
Регистрация: 29.11.2013
Сообщений: 40
04.02.2014, 16:33  [ТС]
Спасибо всем)
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
04.02.2014, 16:56
Есть же метод char.GetNumericValue, зачем строки почем зря плодить?
0
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
04.02.2014, 17:04
Цитата Сообщение от kolorotur Посмотреть сообщение
Есть же метод char.GetNumericValue, зачем строки почем зря плодить?
Не вижу разницы
C#
1
2
3
4
5
6
7
8
9
string s = Console.ReadLine();
            int[] IntArray = new int[s.Length];
 
            for (int i = 0; i < s.Length; i++)
            {
                IntArray[i] = Convert.ToInt32( Char.GetNumericValue(s[i]));
                Console.WriteLine(IntArray[i]);
            }
            Console.ReadKey();
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
04.02.2014, 17:23
Цитата Сообщение от -HPR- Посмотреть сообщение
Не вижу разницы
Лишние строки длиной в один символ в куче не будут плодиться.

Ну, это если не считать правильного преобразования символов, которые представляют собой числа, но не в промежутке 0-9. В данном случае это не играет роли.
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
04.02.2014, 18:40
kolorotur, не люблю этот метод, потому что с ним запись слишком длинная
C#
1
int i = (int)char.GetNumericValue(s[i]);
может так и правильнее, но слишком уж нелепо, да еще и с кастом в double и обратно.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
04.02.2014, 19:17
Psilon, ну так эстетам шарп предоставляет шикарную возможность присыпать вызов сахарком
C#
1
2
3
4
5
6
7
static class CharExtensions
{
   public static int ToDigit(this char c)
   {
      return (int)char.GetNumericValue(c);
   }
}
C#
1
2
3
4
5
for (int i = 0; i < s.Length; i++)
{
   IntArray[i] = Convert.ToInt32(s[i].ToDigit());
   Console.WriteLine(IntArray[i]);
}
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
04.02.2014, 23:06
kolorotur, только таскать постоянно по проектам замучаешься Хотя я уже видимо дорос до уровня "собственной библиотеки". Видимо через пару лет дорасту до "свой никому не нужный MVVM-фреймворк"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.02.2014, 23:06
Помогаю со студенческими работами здесь

Ошибки: Cannot implicitly convert type 'string' to 'int' и Argument 1: cannot convert from 'int' to 'string'
youtube.com_Пишем парсер на Csharp. Ошибка Пытаюсь написать парсер. Вроде сделал всё как в уроке. Выдаёт ошибки: - в строке...

Dictionary<Tuple<string,string>, Dictionary<int,int>> dict - возможно ли?
Собственно вопрос в заголовке. Возможно ли использовать объект вида Dictionary&lt;Tuple&lt;string,string&gt;, Dictionary&lt;int,int&gt;&gt; ...

Получить значение value (string) из Dictionary<int, string>
Имеем Dictionary&lt;int, string&gt; pos = new Dictionary&lt;int, string&gt;; pos.Add(1,&quot;A&quot;); pos.Add(2,&quot;B&quot;); Dictionary&lt;int, int&gt; bet =...

Как преобразовать Dictionary<string, int> в Dictionary<object, int>
Есть метод с сигнатурой public KeyValuePair&lt;string, int&gt; MyMethod(Dictionary&lt;string, int&gt; dic, Random rndm) {} Алгоритму...

Неправильно работает string.compare()
Доброго всем времени суток. Столкнулся с проблемой - не могу решить. Есть отсортированный файл: Файл большой, поэтому...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru