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

Метод по проверке символов

28.12.2020, 20:31. Показов 1267. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, коллеги.
Я тут начал для себя изучать C#. Пишу консольное приложение. Есть проблемка с методом, который проверяет введённый возраст на символы и если содержатся символы, то по новой просим ввести возраст. Работает оно буквально 1 раз. Если ввести 2 и более неверно раз, а потом ввести правильно, то возвращается почему-то предпоследнее введённое неправильное значение (символ). Дебагом пробежался - доходит до Return и возвращает корректное число, а затем как будто возвращается в предыдущие циклы(я так понимаю, он их не завершил прошлые разы) и заменяет переменную на ранее введённый некорректный символ.
Вопрос - как мне правильно выйти из этого круга ада, чтобы в переменную age вернулось число?)

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
 
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string  firstName, lastName,age;
 
 
            Console.WriteLine("Введите своё имя:");
            firstName = Console.ReadLine();
            Console.WriteLine("Введите свою фамилию:");
            lastName = Console.ReadLine();
            Console.WriteLine("Введите свой возраст:");
            age = Console.ReadLine();
            age = CheckAge(age); //ПРИСВАИВАЕМ age ТО, ЧТО ВЕРНУЛИ С МЕТОДА CheckAge
            Convert.ToInt32(age);
 
            Console.WriteLine("Приветствую вас, " + firstName + " " + lastName + ", возраст: " + age);
 
            DateTime dateNow = DateTime.Now;
            DayOfWeek dayNow = DateTime.Now.DayOfWeek;
            int daysInMonth = DateTime.DaysInMonth(2020, 12);
            Console.WriteLine("Текущая дата: " + dateNow + ", " + dayNow + ", дней в месяце: " + daysInMonth);
            Console.ReadKey();
 
        }
 
        public static string CheckAge (string age)
        {
            Regex regex = new Regex("^[a-zA-Za-яА-Я]+$");
            string number;
 
            if (regex.IsMatch(age))
 
                {
                    Console.WriteLine("Вы ввели неверный возраст. Введите, пожалуйста, только цифры!");
                    number = Console.ReadLine();
                    age = number;
                    CheckAge(number); //ВОЗВРАЩАЕТСЯ СЮДА ПОСЛЕ RETURN С ВВЕДЁННЫМ ЧИСЛОМ И НАЧИНАЕТ ПЕРЕДАВАТЬ СТАРЫЕ ЗНАЧЕНИЯ СИМВОЛОВ
               
                }
 
            else
            {
                number = age;
            }
            return age;
            
        }
 
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.12.2020, 20:31
Ответы с готовыми решениями:

В проверке условия метод ReadByte() выдает значение -1
Господа, помогите разобраться пожалуйста. В целях обучения решил сделать небольшую программку. Она должна принимать с консоли введенный...

Сайт CodeWars при проверке решения выдаёт ошибку, при проверке в VisualStudio ошибки нет
Задача написать метод,который будет проверять порядок круглых скобок. Написал код, проверил в Visual Studio, всё нормально. ...

Исключение символов при проверке
В общем, нужно, чтобы по нажатию на кнопку, из текст бокса считывалось слово или фраза, и при соответствии со словом в коде, выдавало...

5
Эксперт .NET
 Аватар для Rius
13163 / 7723 / 1679
Регистрация: 25.05.2015
Сообщений: 23,525
Записей в блоге: 14
28.12.2020, 20:35
Цитата Сообщение от LexeresBrest Посмотреть сообщение
Есть проблемка с методом, который проверяет введённый возраст на символы и если содержатся символы
LexeresBrest, вам сам процесс написания интересен или нужен результат? А то такая проверка выполняется одной строчкой кода...
0
0 / 0 / 0
Регистрация: 28.12.2020
Сообщений: 3
28.12.2020, 20:39  [ТС]
Rius,
Мне сам процесс написания интересен, хочу понять, что не так делаю
Если ввести первый раз, допустим, "Q", потом снова неверное "L", а затем уже верное число, допустим, 50, то он сначала возвращает 50, а затем начинает возвращать "L" и всё валится на конвертации в INT. Будто возвращается в прошлый цикл проверки.
Как мне выйти правильно из этой проверки или как правильнее оптимизировать такую проверку с возвратом на повторный запрос ввода Возраста?
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
28.12.2020, 20:41
LexeresBrest, почитай про рекурсию
0
Эксперт .NET
 Аватар для Rius
13163 / 7723 / 1679
Регистрация: 25.05.2015
Сообщений: 23,525
Записей в блоге: 14
28.12.2020, 20:44
Лучший ответ Сообщение было отмечено LexeresBrest как решение

Решение

Цитата Сообщение от LexeresBrest Посмотреть сообщение
public static string CheckAge (string age)
Не CheckAge, а bool IsNumber(string value), судя по условию.
Повтор ввода незачем делать рекурсией.
См. "Запрещённый" goto

И вообще, есть готовый метод int.TryParse, где проверка реализована.
0
0 / 0 / 0
Регистрация: 28.12.2020
Сообщений: 3
28.12.2020, 21:34  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
И вообще, есть готовый метод int.TryParse, где проверка реализована.

Благодарю, получилось применить tryParse
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.12.2020, 21:34
Помогаю со студенческими работами здесь

Статический метод и динамический метод: вывод массива символов, сортировка массива символов
Конструкторы: параметр - строка, создание массива символов. параметр - число, создание массива символов заданного размера Методы: вывод...

Метод перестановки символов с ключом
Пользователь вводит текст(русский алфавит с пробелами,без знаков препинания). Запрограммировать получение шифротекста методом перестановки...

Метод для замены символов
создание статического метода removeLetter, который возвращает массив символов и принимает переменную типа String в качестве параметра....

Шифрование / дешифрование (метод перестановки символов)
Здравствуйте.проблема такая:по варианту дали ключ и метод шифрования.похожие темы нашел но не то(( вернее начало нашел тут...

Метод charAt для всех символов
Метод charAt возвращает символ, стоящий на указанной позиции в строке. А как сделать можно чтоб он все символы рассматривал. Задание такое...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru