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

Как проверить переменную как элемент алфавита

27.08.2012, 01:39. Показов 3046. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
string disk;
bool b = true;
while (b)
            {
                Console.WriteLine("\n \t Which disk? C,D,E....");
                disk=Console.ReadLine();
                string[] ss = new string[] {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
                for (int i = 0; i < ss.Length; i++)
                {
                    if (disk == ss[i])
                        b = false; 
                }
                if (b)
                    Console.WriteLine("\n \t Try again !");
            }
Хотел написать проверку значения перменной, есть ли она большой буквой латинского алфавита. Ничего умнее я не придумал) Кроме кода представленного выше. Но я думаю есть способ попроще, что б не писать столько кода. Есть идеи?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.08.2012, 01:39
Ответы с готовыми решениями:

Как проверить переменную с Nothing?
Как проверить переменную, если она равна Nothing? Если использую If X &lt;&gt; Nothing Then то...

Как проверить переменную на пустоту?
Как проверить с помощью if else или while do что пользователь что-то ввел, а не просто нажал...

Как проверить переменную на пустоту?
Подскажите пожалуйста, как в С++ можно проверить переменную на пустоту? Предположем что, в некой...

Как проверить переменную на наличие переполнения?
Переменная типо long, но не в этом суть.

10
54 / 53 / 5
Регистрация: 14.08.2012
Сообщений: 252
27.08.2012, 03:06 2
using System.Linq;
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            char disk; //буква диска
            while (true)
            {
                Console.WriteLine("\n \t Which disk? C,D,E....");
                string s = Console.ReadLine();
                if ((s.Length != 1) || (!"ABCDEFGHIJKLMNOPQRSTUVWXYZ".Contains(s[0])))
                    Console.WriteLine("\n \t Try again !");
                else
                {
                    disk = s[0];
                    break;
                }
            }
            //продолжение кода
Так же, существует метод char.IsUpper(c), но он проверяет букву не только английского алфавита, поэтому не совсем подходит.
1
5 / 5 / 3
Регистрация: 21.08.2012
Сообщений: 205
27.08.2012, 03:30  [ТС] 3
У меня ругается на
C#
1
using System.Linq;
Я юзаю ещё старый Visual Studio 2005, это из за того?
0
Заблокирован
27.08.2012, 04:16 4
Цитата Сообщение от Dzib Посмотреть сообщение
Я юзаю ещё старый Visual Studio 2005, это из за того?
Да. Linq появился только с фреймворк 3.5. Вам давно не мешает обновить свою IDE
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
27.08.2012, 15:34 5
Dzib, а вам не кажется, что должна быть введена только одна буква? Тогда так
C#
1
2
3
4
5
6
7
8
char disk;
while (true)
{
   Console.WriteLine("\n \t Which disk? C,D,E....");
   disk=Console.ReadLine().Trim()[0];  
   if (disk >= 'A' && disk <='Z') break;
   else Console.WriteLine("\n \t Try again !");
}
1
54 / 53 / 5
Регистрация: 14.08.2012
Сообщений: 252
27.08.2012, 18:21 6
Цитата Сообщение от Psilon Посмотреть сообщение
Console.ReadLine().Trim()[0];
Если введена пустая строка, то здесь возникнет исключение.

К тому же строка, например - "Cghfyy" - окажется верной, т.к. в вашем алгоритме учитывается и проверяется только первая буква, хотя с точки зрения человеческого восприятия "Cghfyy" - не является буквой диска и надо бы не засчитывать такой ввод.
0
5 / 5 / 3
Регистрация: 21.08.2012
Сообщений: 205
27.08.2012, 18:29  [ТС] 7
Спасибо, я й не знал что можно так сравнивать буквы.
C#
1
if (disk >= 'A' && disk <='Z')
А что делает этот метод? (если это метод)
C#
1
Trim()[0]
0
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
27.08.2012, 18:35 8
Цитата Сообщение от Dzib Посмотреть сообщение
Спасибо, я й не знал что можно так сравнивать буквы.
Это потому что ты не знал как выглядит ASCII таблица, на деле это компилируется в
если кодБуквы >= коду символа A и <= коду симола Z. В ASCII таблице буквы с A по Z идут подряд и код A меньше кода Z.
Цитата Сообщение от Dzib Посмотреть сообщение
А что делает этот метод? (если это метод)
Усекает строку и потом берётся первый символ (операция [0]).
1
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
28.08.2012, 01:59 9
AceOfSpades, это было сделано намерено. В принципе, если автору нужно точное соответствие, можно и так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
char disk;
            Console.WriteLine("\n \t Which disk? C,D,E....");
            while (true)
            {
                var tempstring = Console.ReadLine();
                if (string.IsNullOrWhiteSpace(tempstring) || tempstring.Length != 1)
                    continue;
                disk = tempstring[0];
                if (disk >= 'A' && disk <= 'Z') break;
                Console.WriteLine("\n \t Try again !");
            }
            Console.ReadKey();
0
54 / 53 / 5
Регистрация: 14.08.2012
Сообщений: 252
28.08.2012, 14:23 10
Да, можно и так.
Но всё равно:
C#
1
2
          if (string.IsNullOrWhiteSpace(tempstring) || tempstring.Length != 1)
                    continue;
- здесь много лишнего, достаточно проверить tempstring.Length != 1, остальное никак не повлияет на работу алгоритма.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
28.08.2012, 14:24 11
AceOfSpades, Если человек напишет " С" программа должна воспринять как С (имхо). А одну только проверку на длину она не пройдет. А вообще я описался, имелось ввиду
C#
1
2
3
4
5
if (string.IsNullOrWhiteSpace(tempstring))
   continue;
tempstring = tempstring.Trim();
if (tempstring.Length != 1)
   continue;
1
28.08.2012, 14:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.08.2012, 14:24
Помогаю со студенческими работами здесь

Как проверить переменную несколько раз?
решил доработать код загрузки файла на сервер, а именно добавить условие в котором проверяется...

Как проверить переменную на наличие русских символов ?
Как проверить переменную на наличие русских символов ?

Php как проверить переменную на совпадение с элементами массива?
есть переменная $name. есть массив array('test1','test2','test3'); если переменная $name равна...

Как проверить, что пользователь ввел число в переменную string?
Скажите пожалуйста как проверить что пользователь ввел число в переменную string? И как его потом...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru