5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
1

Преобразование типов

11.04.2018, 14:31. Показов 1062. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подскажите как преобразовать правильно значение стринг в булеан
мой пример:
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
namespace ConsoleApp15
{
public class Quest_for_Trol
    {
        public void Q()
        {
            q1.Quest();
        }
    class Quest1
        {
            public void Quest()
            {
                Console.WriteLine("'Кон - тролль' популяции.\n \t\t\t\tЗадание\n Убейте 2 мистиков, 2 охотников, 2 разведчиков и 1 повелителя зверей из племени Кровавого Скальпа.");
                bool giveTheQuest, refuse_assignment, fight;
                Console.WriteLine("принять задание (1- да, 0- нет)\n");
                giveTheQuest = Convert.ToBoolean(Console.ReadLine());
                if (giveTheQuest)
                {
                    Console.WriteLine("\n Насколько понимаю, ты скоро отправляешься в Зул'Кунду. Но пока ты здесь, у меня для тебя небольшое задание.\n В Тернистой долине развелось слишком много Орков.Западные земли занял клана Сумеречного Молота, восточные – клан Кровавой Глазницы.Они перебираются из своих руин в джунгли и нарушают равновесие здешней природы.Пора нам его восстановить.\n Зул'Кунда – столица Кровавого Скальпа. Там живут все высокопоставленные члены кланов. Убей нескольких, а потом возвращайся ко мне.");
                }
                else
                    Console.WriteLine("Вы отказались от квеста");
            }
        }
        Quest1 q1= new Quest1();
    }
class Program
    {
 
 
        static void Main(string[] args)
        {
 
            //Begin b = new Begin();
            //b.Print();
            Quest_for_Trol qft= new Quest_for_Trol();
            qft.Q();
 
            Console.ReadKey();
 
        }
    }
}
проблема вот в этих строках:
C#
1
2
3
Console.WriteLine("принять задание (1- да, 0- нет)\n");
                giveTheQuest = Convert.ToBoolean(Console.ReadLine());
                if (giveTheQuest)....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2018, 14:31
Ответы с готовыми решениями:

Преобразование типов
Код: using System; using System.Text; public class Program { public static void...

Преобразование типов в T
Доброго времени суток всем. Есть у меня List с заранее неизвестным типом <T> Так же есть строка...

Преобразование типов
Почему компилятор такое выражение допускает: byte b = 10; b *= b; А вот такое нет: byte b...

Преобразование типов
Подскажите как в c# с массивом int можно поработать как с массивом byte; Как в с++, например, int...

31
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,263
11.04.2018, 14:57 2
Esso11,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void Quest()
                {
                    Console.WriteLine("'Кон - тролль' популяции.\n \t\t\t\tЗадание\n Убейте 2 мистиков, 2 охотников, 2 разведчиков и 1 повелителя зверей из племени Кровавого Скальпа.");
                    bool giveTheQuest ;
                    Console.WriteLine("принять задание (1- да, 0- нет)\n");
                    int number = Convert.ToInt32(Console.ReadLine());
                    giveTheQuest = Convert.ToBoolean(number); 
                    if (giveTheQuest)
                    {
                        Console.WriteLine("\n Насколько понимаю, ты скоро отправляешься в Зул'Кунду. Но пока ты здесь, у меня для тебя небольшое задание.\n В Тернистой долине развелось слишком много Орков.Западные земли занял клана Сумеречного Молота, восточные – клан Кровавой Глазницы.Они перебираются из своих руин в джунгли и нарушают равновесие здешней природы.Пора нам его восстановить.\n Зул'Кунда – столица Кровавого Скальпа. Там живут все высокопоставленные члены кланов. Убей нескольких, а потом возвращайся ко мне.");
                    }
                    else
                        Console.WriteLine("Вы отказались от квеста");
                }
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
11.04.2018, 15:18  [ТС] 3
ShmelVG, это только так преобразование модно сделать?

Добавлено через 1 минуту
ShmelVG, спасибо большое
0
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,263
11.04.2018, 15:29 4
Esso11, Вам для начала нужно перевести из типа string к int, чтобы можно было считывать 1 или 0 и потом уже привести int к bool. По другому можно сделать если вы сравните считываемую строку с числом напрямую
C#
1
2
3
4
5
6
7
8
9
10
11
Console.WriteLine("принять задание (1- да, 0- нет)\n");
            int number = Convert.ToInt32(Console.ReadLine());
            if (number == 0)
            {
                Console.WriteLine("\n Насколько понимаю, ты скоро отправляешься в Зул'Кунду. Но пока ты здесь, у меня для тебя небольшое задание.\n В Тернистой долине развелось слишком много Орков.Западные земли занял клана Сумеречного Молота, восточные – клан Кровавой Глазницы.Они перебираются из своих руин в джунгли и нарушают равновесие здешней природы.Пора нам его восстановить.\n Зул'Кунда – столица Кровавого Скальпа. Там живут все высокопоставленные члены кланов. Убей нескольких, а потом возвращайся ко мне.");
            }
            else if (number == 1)
            {
                Console.WriteLine("Вы отказались от квеста");
            }
            else Console.WriteLine("Что-то пошло не так...");
1
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
11.04.2018, 15:38  [ТС] 5
ShmelVG, а можно как то поменять работу что бы сделать не через булеан переменную а через введение слова да или нет??
0
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,263
11.04.2018, 15:47 6
Esso11, "Любой каприз за Ваши деньги"(с)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            public void Quest()
            {
                Console.WriteLine("'Кон - тролль' популяции.\n \t\t\t\tЗадание\n Убейте 2 мистиков, 2 охотников, 2 разведчиков и 1 повелителя зверей из племени Кровавого Скальпа.");
                Console.WriteLine("принять задание (1- да, 0- нет)\n");
                string str = Console.ReadLine();
                if (str == "да")
                {
                    Console.WriteLine("\n Насколько понимаю, ты скоро отправляешься в Зул'Кунду. Но пока ты здесь, у меня для тебя небольшое задание.\n В Тернистой долине развелось слишком много Орков.Западные земли занял клана Сумеречного Молота, восточные – клан Кровавой Глазницы.Они перебираются из своих руин в джунгли и нарушают равновесие здешней природы.Пора нам его восстановить.\n Зул'Кунда – столица Кровавого Скальпа. Там живут все высокопоставленные члены кланов. Убей нескольких, а потом возвращайся ко мне.");
                }
                else if (str == "нет")
                {
                    Console.WriteLine("Вы отказались от квеста");
                }
                else Console.WriteLine("Что-то пошло не так...");
            }
1
SETI
64 / 49 / 18
Регистрация: 09.04.2018
Сообщений: 210
11.04.2018, 15:49 7
Проблема в том была что ты записываешь в giveTheQuest не true\false, а да\нет, поэтому и ошибка). Сделай еще переменную и прировняй, если да = да значит return true else return false ))
0
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,263
11.04.2018, 15:49 8
Esso11, только для реального проекта я бы введенное слово перевел бы к примеру к верхнему регистру что бы не было разногласий между Да/ДА
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
11.04.2018, 15:53  [ТС] 9
ShmelVG, спасибо за помощь, и простите что отвлек своими глупостями

Добавлено через 1 минуту
ShmelVG, а как перевести вводимый ответ к регистрам верхним или нижним

Добавлено через 1 минуту
orestsyn, ваш вариант в коде как выглядит?
0
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,263
11.04.2018, 15:57 10
Esso11,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 public void Quest()
            {
                Console.WriteLine("'Кон - тролль' популяции.\n \t\t\t\tЗадание\n Убейте 2 мистиков, 2 охотников, 2 разведчиков и 1 повелителя зверей из племени Кровавого Скальпа.");
                Console.WriteLine("принять задание (1- да, 0- нет)\n");
                string str = Console.ReadLine();              
                if (str.ToUpper() == "ДА")
                {
                    Console.WriteLine("\n Насколько понимаю, ты скоро отправляешься в Зул'Кунду. Но пока ты здесь, у меня для тебя небольшое задание.\n В Тернистой долине развелось слишком много Орков.Западные земли занял клана Сумеречного Молота, восточные – клан Кровавой Глазницы.Они перебираются из своих руин в джунгли и нарушают равновесие здешней природы.Пора нам его восстановить.\n Зул'Кунда – столица Кровавого Скальпа. Там живут все высокопоставленные члены кланов. Убей нескольких, а потом возвращайся ко мне.");
                }
                else if (str.ToUpper() == "НЕТ")
                {
                    Console.WriteLine("Вы отказались от квеста");
                }
                else Console.WriteLine("Что-то пошло не так...");
            }
Добавлено через 51 секунду
Esso11, к нижнему тоже самое, только .ToUpper() замените на .ToLower ();

Добавлено через 1 минуту
Esso11, теперь регистр не имеет значения)
1
SETI
64 / 49 / 18
Регистрация: 09.04.2018
Сообщений: 210
11.04.2018, 15:58 11
C#
1
2
3
4
5
6
7
8
9
10
11
                bool giveTheQuest, refuse_assignment, fight;
                Console.WriteLine("принять задание (1- да, 0- нет)\n");
                 string Choice;
                Choice = Console.ReadLine();
                if(Choice=="1") giveTheQuest = true;
                else giveTheQuest = false;
                giveTheQuest = Convert.ToBoolean(Console.ReadLine());
                if (giveTheQuest)
                {
                    Console.WriteLine("\n Насколько понимаю, ты скоро отправляешься в Зул'Кунду. Но пока ты здесь, у меня для тебя небольшое задание.\n В Тернистой долине развелось слишком много Орков.Западные земли занял клана Сумеречного Молота, восточные – клан Кровавой Глазницы.Они перебираются из своих руин в джунгли и нарушают равновесие здешней природы.Пора нам его восстановить.\n Зул'Кунда – столица Кровавого Скальпа. Там живут все высокопоставленные члены кланов. Убей нескольких, а потом возвращайся ко мне.");
                }
Думаю ты именно об этом спрашивал)

Добавлено через 56 секунд
Как ты проверяешь на да\нет, если пользователь впишет 0\1 ?
1
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,263
11.04.2018, 16:03 12
orestsyn, Esso11, этот код вызывает исключение
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
11.04.2018, 16:05  [ТС] 13
спасибо за помощь, пробую написать квестовую игру на с# с применением патернов но еще не дошел до самого интересного ...)
0
SETI
64 / 49 / 18
Регистрация: 09.04.2018
Сообщений: 210
11.04.2018, 16:07 14
Ты проверяешь str на да\нет, но str будет равен либо 0 либо 1)
Тогда надо переделать код вот так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void Quest()
            {
                Console.WriteLine("'Кон - тролль' популяции.\n \t\t\t\tЗадание\n Убейте 2 мистиков, 2 охотников, 2 разведчиков и 1 повелителя зверей из племени Кровавого Скальпа.");
                Console.WriteLine("принять задание (Дает)\n");
                string str = Console.ReadLine();              
                if (str.ToUpper() == "ДА")
                {
                    Console.WriteLine("\n Насколько понимаю, ты скоро отправляешься в Зул'Кунду. Но пока ты здесь, у меня для тебя небольшое задание.\n В Тернистой долине развелось слишком много Орков.Западные земли занял клана Сумеречного Молота, восточные – клан Кровавой Глазницы.Они перебираются из своих руин в джунгли и нарушают равновесие здешней природы.Пора нам его восстановить.\n Зул'Кунда – столица Кровавого Скальпа. Там живут все высокопоставленные члены кланов. Убей нескольких, а потом возвращайся ко мне.");
                }
                else if (str.ToUpper() == "НЕТ")
                {
                    Console.WriteLine("Вы отказались от квеста");
                }
                else Console.WriteLine("Что-то пошло не так...");
            }
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
20.04.2018, 21:10  [ТС] 15
ShmelVG, привет, можешь подсказать с такой проблемой...
C#
1
2
3
4
5
6
7
8
9
10
11
 Console.WriteLine("\t\t\tWelcome to Fight- Club!!!");
            Console.WriteLine();
            Console.WriteLine("Выберите себе Фракцию: ");
            String s;
            int i;
            do
            {
                s = Convert.ToInt32(Console.WriteLine("#1 - Trols \n#2 - Orcs \n#3 - Humans "));
            } while (!Int32.TryParse(s, out i));
            
            int Fraction = Convert.ToInt32(Console.ReadLine());
пишет не может преобразовать войд в стринг.... не подскажешь как это исправить?!
0
3482 / 2486 / 1173
Регистрация: 14.08.2016
Сообщений: 8,185
20.04.2018, 21:20 16
попробуй понять, что у тебя в 8 строке творится!
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
20.04.2018, 22:04  [ТС] 17
Diamante, закрывается скобка

Добавлено через 8 минут
Diamante, или ты про новый кусок кода? так там приведение типа
0
3482 / 2486 / 1173
Регистрация: 14.08.2016
Сообщений: 8,185
20.04.2018, 22:11 18
Esso11, какого в какой?
0
151 / 148 / 103
Регистрация: 30.10.2016
Сообщений: 314
20.04.2018, 22:18 19
Esso11, нужно попробовать расшифровать эту строку:

C#
1
s = Convert.ToInt32(Console.WriteLine("#1 - Trols \n#2 - Orcs \n#3 - Humans "));
Присвоить строковой переменной s фразу "#1 - Trols \n#2 - Orcs \n#3 - Humans ", которая должна быть выведена на консоль с помощью метода WriteLine, предварительно конвертировав её в целочисленной значение.
0
3482 / 2486 / 1173
Регистрация: 14.08.2016
Сообщений: 8,185
20.04.2018, 22:20 20
willow300, я подводил его к этому же, но что б он сам дошел
0
20.04.2018, 22:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2018, 22:20
Помогаю со студенческими работами здесь

Преобразование типов
Почему работает данный код??? Разве существует неявное преобразование int (переменная х) в...

Преобразование типов
Есть метод, который принимает на вход переменную типа IEnumerable<DataRow>; у меня есть...

Преобразование типов
Что-то совсем в тупик зашла.Как здесь явно преобразовать? public SortedDictionary<char, double>...

Преобразование типов
нужна помощь с преобразованием типа. Из текстового поля в которое предполагается введение 13...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru