BooleanVariable
Трябва да напишем код, който да определя "male" или "female", реших малко да усложна задачата, но зациклих.
Проблема е следния, въвеждам цифра различна от 1 или 2 и кода спира да работи дори и след първа "грешна" въведена на въведа 1 или 2. Ако въведа 1 или 2 тряба да го въведа 2 пъти, за да проработи. Ето го и кода:
using System;
class BooleanVariable
{
static void Main()
{
int male = 1;
int female = 2;
Console.WriteLine("\n" + "Write in your gender!" + "\n" + "Write in {0} for male: " + "\n" + "Write in {1} for female:", 2, 1);
int a = int.Parse(Console.ReadLine());
string input = Console.ReadLine();
while (a < 1 || a > 2)
{
input = Console.ReadLine();
}
if (a % 2 == 0)
{
Console.WriteLine("Gender Male!");
}
else
{
Console.WriteLine("Gender Female!");
}
}
}
ако string input = Console.ReadLine(); го заместя е "а" Visual Stuioto ми казва: "Cannot implicitly convert type 'string' to 'int'
А как да "парсна" input = Console.ReadLine(); ??
Здравей,
Принципно наистина си си усложнил живота, защото първите две променливи реално можеш и без тях. Също, при наличието на парсването, променливата за инпут е излишна. А самото парсване се налага, за да можеш да сравниш числото с другото число, ако не го направиш става нещо от рода на дали две яйца са равни на три вилици.
Това е моето предложение за цялостния код :)
using System;
class BooleanVariable
{
static void Main()
{
Console.WriteLine("\n" + "Write in your gender!" + "\n" + "Write in {0} for male: " + "\n" + "Write in {1} for female:", 2, 1);
int a = int.Parse(Console.ReadLine());
while (a < 1 || a > 2)
{
a = int.Parse(Console.ReadLine()); //Тук се случва парсването на подадените от потребителя данни
}
if (a==1)
{
Console.WriteLine("Gender Male!");
}
else
{
Console.WriteLine("Gender Female!");
}
}
}
Дано съм помогнала! Успех!
Митко потърси ме във фейсбук за отборният проект - Mario Zisov.
Първото нещо което ми прави впечетление е, че нямаш условие за излизане от while цикълът, освен ако не въведеш грешен input (различен от 1 или 2).
Второто нещо е, че въобще не ти трябва while цикъл. Ти вече си прочел полът на горният ред с int a = int.Parse(Console.ReadLine()); Моята препоръка за кодът е (разбира се ако искаш да го запазиш толкова сложен):
int male = 1;
int female = 2;
Console.WriteLine("\n" + "Write in your gender!" + "\n" + "Write in {0} for male: " + "\n" + "Write in {1} for female:", 2, 1);
//string input = Console.ReadLine(); - стрингът наистина не ти трябва
while (true) - цикълът се върти докато ти не му кажеш да спре.
{
int a = int.Parse(Console.ReadLine());
if (a == male) - male и female си ги задал в началоти на кодът/ проверката с деление с остатък би била полезна за проверка за четно и нечетно число, но не мисля, че е добра идея тук.
{
Console.WriteLine("Gender Male!");
}
else if(a==female)
{
Console.WriteLine("Gender Female!");
}
else - излизаш от цикълът;
{
break;
}
Console.WriteLine("\n" + "Write in your gender!" + "\n" + "Write in {0} for male: " + "\n" + "Write in {1} for female:" + "\n" + "Write in anything else to exit:", 2, 1);
}
Но повечето от кодът е излишен. Като цяло бих махнал while цикълът и директно правиш проверките.
Темата е от 21/12/2015, но все пак мерси за отговора ;)