Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с консольным вводом, Введенное число расценивается как символ 
:(
    Опции темы
0null
Дата 23.11.2007, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.11.2007

Репутация: нет
Всего: нет



При вводе числа оно воспринимается как char и переводится в соответствующий ASCII-код, который потом и передается вызывающей функции:

using System;
using System.Collections.Generic;
using System.Text;
using con = System.Console;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int s = con.Read();
            //con.WriteLine(s);
            int[] m = new int[s];
            con.WriteLine(m.Length);
            con.ReadKey();
        }
    }
}
В результате вместо массива из 1 элемента получается массив мз 49. Как бы это исправить(т.е. чтобы Console.Read передавала в s само число, а не его код)? 

PM MAIL   Вверх
1stain
Дата 24.11.2007, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 3
Всего: 40



Код

            int arraySize;
            Console.Write("Введите размер массива : ");
            while( true )
            {
                if (Int32.TryParse(Console.ReadLine(), out arraySize))
                    break;
                Console.WriteLine("Неправильный ввод, повторите");
            }
            int[] intArray = new int[arraySize];



--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
0null
Дата 24.11.2007, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.11.2007

Репутация: нет
Всего: нет



Ясно. А все остальные числа,,напр. эл-ты массива, тоже так придется..."трайпарсить"? Все-таки надо переходить на цпп...
PM MAIL   Вверх
1stain
Дата 25.11.2007, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 3
Всего: 40



0null, насколько я понимаю, привычный вам cin >> x; проводит приведение введенной строки к типу переменной x. В System.Console приведение ввода к типу переменной не реализовано, но вам никто не мешает реализовать самому класc для работы с консолью, который будет возвращать уже готовый тип, но опять таки через Parse
например так:
Код

class Program
{
    static void Main(string[] args)
    {
        Int32 x = MyConsole.GetInt32();
        Double d = MyConsole.Get<Double>();
    }
}

public static class MyConsole
{
    public static Int32 GetInt32()
    {
        return Int32.Parse(Console.ReadLine(), System.Globalization.NumberStyles.Integer, System.Globalization.NumberFormatInfo.InvariantInfo);
    }

    public static T Get<T> ( )
    {
        System.Reflection.MethodInfo _parseMethod = typeof(T).GetMethod("Parse", new Type[] { typeof(String), typeof(IFormatProvider) });
        T _retVal = (T)_parseMethod.Invoke(null, new object[]{Console.ReadLine(), System.Globalization.NumberFormatInfo.InvariantInfo});
        return _retVal;
    }
}


Цитата(0null @  24.11.2007,  23:09 Найти цитируемый пост)
Все-таки надо переходить на цпп...

насколько я понял, имелся ввиду как раз переход с цпп на шарп?

Это сообщение отредактировал(а) 1stain - 25.11.2007, 00:14


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.