我创建了一个简单的程序,用户必须回答一些问题并最终看到他有多少信用。答案应该是“是”或“否”。最近(在我完成程序并且工作正常后),我注意到有一个方法ToUpper()
。所以我想在我的程序中输入它。我使用if语句来使用传输是或否,因为我不能这样写:if(answer1 == yes),我已存储"是"在一个名为s的字符串中。它有效,但我现在无法使用s.ToUpper
。所以我不得不从if语句改为switch语句,一切都没有问题,除了那个未分配的局部变量,它存储了每个问题有多少信用。错误在g = i1 + i2 + i3 + i4 + i5
。那些"我"没有价值。谁能帮我?如果有一种方法可以使用ToUpper和if语句,我不介意再次使用它。这是我的代码:
int p = 0;
int i1;
int i2;
int i3;
int i4;
int i5;
int g;
int qu1 = 10;
int qu2 = 20;
int qu3 = 20;
int qu4 = 25;
int qu5 = 25;
Console.WriteLine("Calculating the probability of being diabete patient, please answer by yes or no");
Console.Write("What is your name ? \n");
string username = Console.ReadLine();
Console.Write("Do you smoke ? \n");
string answer1 = Console.ReadLine();
switch(answer1.ToUpper())
{
case "YES":
i1 = p + qu1;
break;
case "NO":
i1 = p + 0;
break;
}
Console.Write("do one of your parents have diabetes ? \n");
string answer2 = Console.ReadLine();
switch (answer2.ToUpper())
{
case "YES":
i2 = p + qu2;
break;
case "NO":
i2 = p + 0;
break;
}
Console.Write("do u eat ? \n");
string answer3 = Console.ReadLine();
switch (answer3.ToUpper())
{
case "YES":
i3 = p + qu3;
break;
case "NO":
i3 = p + 0;
break;
}
Console.Write("do u drink ? \n");
string answer4 = Console.ReadLine();
switch (answer4.ToUpper())
{
case "YES":
i4 = p + qu4;
break;
case "NO":
i4 = p + 0;
break;
}
Console.Write("do u speak ? \n");
string answer5 = Console.ReadLine();
switch (answer5.ToUpper())
{
case "YES":
i5 = p + qu5;
break;
case "NO":
i5 = p + 0;
break;
}
g = i1 + i2 + i3 + i4 + i5;
Console.WriteLine(username + "," + "your percentage of gtting diabetes is {0}", g + "%");
if (g == 100)
{
Console.WriteLine("You need to take care, and try to follow a healthy lifestyle and stop smoking");
}
if (g >= 50)
{
Console.WriteLine("Pay attention, you are no longer in the safe zone");
}
if (g <= 50)
{
Console.WriteLine("You are in the safe zone, but you can decrease the percentage if you take a little bit care of your health");
}
Console.ReadKey();
答案 0 :(得分:2)
您的switch
个语句都没有默认路径,因此,如果answer
中的任何"YES"
既不是"NO"
也不是i
,那么相应的i
将被取消分配。提供default
的默认值或让您的开关具有switch(answer){
case "YES":
// case body
case "NO":
// case body
default:
i = 0;
}
条款:
red_shield = pyg.image.load(r'images\red shield.png')
red_shield2 = pyg.image.load('images/red shield.png')
red_shield3 = pyg.image.load('images\\red shield.png')
答案 1 :(得分:1)
您的default:
语句中没有任何switch
语句,因此编译器会告诉您,如果用户键入“NOPE”作为答案1,则它不知道该怎么做。
你应该使用if / else,或者你需要添加类似
的东西default:
case "NO":
如果有人输入其他内容,则将“否”设为默认答案。
见相关:What should every programmer know about security? “绝不信任用户输入”
答案 2 :(得分:0)
这可能会出现在下面的代码部分中,因为代码i1
中根本没有分配变量int i1;
。
case "YES":
i1 = p + qu1;
break;
您应该声明并将其指定为默认值,然后在Switch
语句中使用
int i1 = 0;
(OR)
int i1 = default(int);