我一直致力于鱼类日托计划。这个想法是客户输入他们的信息(名称,鱼类名称,鱼类和鱼的长度,以英寸为单位),并根据他们输入的英寸数,最后返回他们的信息和费用。我把它全部写出来并且它做了我想要的东西,除非它得到的费用它输出的比它应该的多。
例如:如果用户将其鱼的长度输入为21,而不是输出“费用:16 $”,则输出“费用:12 $”和“费用:16 $”。
我知道这与我如何设置我的操作符(<,>,< =,> =)有关,这就是为什么它输出的比我想要的多,我只是不能把我的手指如何解决它。
以下是代码:
namespace Fish_O_Rama
{
class Program
{
static void Main(string[] args)
{
//Declaring constants for fish sizes
const int FishSizeSmall = 9;
const int FishSizeMed1 = 10;
const int FishSizeMed2 = 20;
const int FishSizeBig1 = 21;
const int FishSizeBig2 = 30;
const int FishSizeBiggest = 31;
//Declaring constants for the fees
const string FishMonSmall = ("Fee: 7$");
const string FishMonMed = ("Fee: 12$");
const string FishMonBig = ("Fee: 16$");
const string FishMonBiggest = ("Fee: 20$");
//Accepting input from the customer
Console.Write("Please enter your name: ");
string CustName = Console.ReadLine();
Console.Write("Please enter your fishes name: ");
string FishName = Console.ReadLine();
Console.Write("Please enter your fishes species: ");
string FishSpecies = Console.ReadLine();
Console.Write("Please enter the length of your fish in inches: ");
string FishLength = Console.ReadLine();
//Outputting the users input
Console.WriteLine("--------------------------");
Console.WriteLine("Name: " + CustName);
Console.WriteLine("Fishes Name: " + FishName);
Console.WriteLine("Species: " + FishSpecies);
//Fish under 10 inches
if (Convert.ToInt32(FishLength) < FishSizeSmall)
{
Console.WriteLine();
Console.WriteLine(FishMonSmall);
}
//Fish 10 inches to 20 inches
if (Convert.ToInt32(FishLength) >= FishSizeMed1 || Convert.ToInt32(FishLength) <= FishSizeMed2)
{
Console.WriteLine();
Console.WriteLine(FishMonMed);
}
//Fish greater than 20 inches but up to 30 inches
if (Convert.ToInt32(FishLength) >= FishSizeBig1 || Convert.ToInt32(FishLength) <= FishSizeBig2)
{
Console.WriteLine();
Console.WriteLine(FishMonBig);
}
//Fish greater than 30 inches
if (Convert.ToInt32(FishLength) > FishSizeBiggest)
{
Console.WriteLine();
Console.WriteLine(FishMonBiggest);
}
}
}
}
任何帮助都将不胜感激。
答案 0 :(得分:0)
原来我正在使用逻辑或语句“||”我本来应该使用逻辑和陈述“&amp;&amp;”。
像这样:
//Fish 10 inches to 20 inches
if (Convert.ToInt32(FishLength) >= FishSizeMed1 && Convert.ToInt32(FishLength) <= FishSizeMed2)
{
Console.WriteLine();
Console.WriteLine(FishMonMed);
}
感谢古斯曼。
答案 1 :(得分:0)
由于Fish只能有1个长度,因此使用“if / else if”语句而不是一系列“if”语句可能是有意义的。这样,当“if / else if”中的条件评估为true
时,它将短路,而不是在识别出正确的案例后潜在地测试其他不必要的情况。在长度为21的情况下,
if (Convert.ToInt32(FishLength) >= FishSizeMed1 || Convert.ToInt32(FishLength) <= FishSizeMed2)
评估为true
,因为您使用的是||
而不是&&
。我相信您正在尝试确定长度是否在两个值之间,并且不大于或等于最小值或小于或等于最大值。由于21大于10,FishSizeMed1
的值,||
之后的条件甚至不需要检查。这是因为true
|| true
和true
|| false
评估为true
。
下一个if
:
if (Convert.ToInt32(FishLength) >= FishSizeBig1 || Convert.ToInt32(FishLength) <= FishSizeBig2)
由于与上述相同的原因,也评估为true
:10大于或等于21,即FishSizeBig1
的值。
理解两个AND和OR布尔表达式之间的区别将解决这个问题,并使用“if / else if”语句进行链接将使应用程序更有效。