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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Read(), надо получить число 
V
    Опции темы
Flenger
Дата 16.1.2008, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброе время суток!!!!

как мне написать так что бы прога(Console Application) давала мне право:
 
1) вводить только цыфры (текстовые символы нельзя)
2) и выводить те цыфры которые я вписал а не ASCII номер

Код

using System;
using System.Text;

namespace BetaTesting
{
    class Basic
    {
        public static void Main()
        {
            int n;
            n = Console.Read();      //  метод Read() читает текстовый символ, а не числовой и возвратит он число типа int, которое представляет ASCII номер, а не число, которое ты водишь.     
            Console.WriteLine("{0}", n);
        }
    }
}

на С++ было попроще с этим

я попробовал решить вот как

Код

public static void Main()
        {
            string n;
            n = Console.ReadLine();
            int b = Convert.ToInt32(n);            
            Console.WriteLine("{0}", b);
        }



это вроде работает, но нельзя как то без конвертации??? и как сделать что бы вводить можно было только числа???

Зарание Благодарен!!!

PM MAIL   Вверх
0000
Дата 16.1.2008, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

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



Код

static void Main(string[] args)
        {
            try
            {
                Int32 number = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("Number = {0}", number);
            }
            catch (FormatException e)
            {
                Console.WriteLine(e.Message);
            }
            Console.ReadLine();
        }


с конвертацией код не заметил сначала....сорри
а метод Read тебе вообще не вернет то, что ты хочешь - он берет тока 1 символ из входного потока...так что тока так

Это сообщение отредактировал(а) 0000 - 16.1.2008, 22:44
PM MAIL ICQ   Вверх
Magnetic
Дата 16.1.2008, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Flenger @  16.1.2008,  21:31 Найти цитируемый пост)
как сделать что бы вводить можно было только числа???


Код

            ConsoleKeyInfo c;
            StringBuilder number = new StringBuilder(100);
            while ((c = Console.ReadKey(true)).Key!= ConsoleKey.Enter)
            {
                if (Char.IsDigit(c.KeyChar))
                {
                    number.Append(c.KeyChar);
                    Console.Write(c.KeyChar);
                }
            }
            Console.WriteLine();
            int numberValue = int.Parse(number.ToString());
            Console.WriteLine(numberValue);
            Console.ReadLine();



--------------------
Dude, where's my car?
PM MAIL   Вверх
source777
Дата 16.1.2008, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

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



Цитата

на С++ было попроще с этим

я попробовал решить вот как
...
это вроде работает, но нельзя как то без конвертации??? и как сделать что бы вводить можно было только числа???
Интересно, как же ты решал эту задачу на С++? да ещё и без конвертации, особенно учитывая тот факт, что в терминале можно ввести только символы/строки, а уж никак не числа...


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Flenger
Дата 17.1.2008, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Magnetic, 0000 - Спасибо!!!!

source777 - отвечаю на твой вопрос, да мне на С++ было проще это сделать без конвертации, допустим даже так:

Код

#include "stdafx.h"
int Text(int b);
int _tmain(int argc, _TCHAR* argv[])
{
    int a = 0;
    int c = Text(a);
    cout<<c;
    return 0;
}
int Text(int b) {
    cin>>b;
    return b;
}


source777 извени что код не элегантен, так как время на старания небыло + плюс сюда можно было ввести какой то обработчик, что бы он выдавал что вы вводете буквы... я помню там вроде какая то стандартная функцыя была которая недавала вводить буквы....



PM MAIL   Вверх
source777
Дата 17.1.2008, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

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



Да, пожалуй соглашусь, что неявная конвертация:
Код

   int b;
   cin>>b;

проще, чем явная:
Код

   int b = 0; 
   Int32.TryParse(Console.ReadLine(), out b);



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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