![](/img/trans.png)
[英]C# Hackerrank code produces correct results on Data Types challenge in 30 days of code but says I'm wrong
[英]Not sure what I'm missing here? C#(30 Days of Code Challenge; Intro to Conditional Statements)
这是问题所在:
给定一个整数 ,执行以下条件操作:
如果是奇数,则打印 Weird
如果是偶数并且在 to 的包含范围内,则打印 Not Weird
如果是偶数并且在 to 的包含范围内,则打印 Weird
如果是偶数且大于 ,则打印 Not Weird
完成编辑器中提供的存根代码以打印是否奇怪。
输入格式:一行包含一个正整数 N。
约束条件: 1 <= n <= 100
输出格式如果数字很奇怪就打印"Weird"
; 否则,打印"Not Weird"
说明:示例案例 0:n=3
n 是奇数,奇数很奇怪,所以我们打印 Weird
示例案例 1:n = 24 n>20 并且 n 是偶数,所以这并不奇怪。 因此我们打印 Not Weird。
我以前做过这样的事情,但我不确定缺少什么。
它通过了测试用例 0、1、4、5、6,但失败了 2、3 和 7。测试用例 2 是 4,什么也没有发生 测试用例 3 是 18,什么都没有发生 测试用例 7 是 20,什么也没有发生
Console.WriteLine("Enter:");
int N = Convert.ToInt32(Console.ReadLine());
if (N % 2 == 1)
{
Console.WriteLine("Weird");
}
else if (N % 2 == 0 && (N <= 2 && N >= 5))
{
Console.WriteLine("Not Weird");
}
else if (N % 2 == 0 && (N <= 6 && N >= 20))
{
Console.WriteLine("Weird");
}
else if (N % 2 == 0 && N > 20)
{
Console.WriteLine("Not Weird");
}
情况 2 是 4 =“不奇怪” 情况 3 是 18 =“奇怪” 情况 7 是 20 =“奇怪”
你的情况是不可能的。 例如...
else if (N % 2 == 0 && (N <= 6 && N >= 20))
{
Console.WriteLine("Weird");
}
永远不会发生。 您正在寻找 <= 6 AND >= 20 的数字。根据您的描述不确定,但听起来您可能需要切换顺序 - 例如:
else if (N % 2 == 0 && (N >= 6 && N <= 20))
{
Console.WriteLine("Weird");
}
此外,由于您已经从第一个 if 语句中确定了数字是偶数,因此您可以稍微简化一下。
else if (N >= 6 && N <= 20)
{
Console.WriteLine("Weird");
}
尝试这个:
if(N <= 1|| N >= 100){
Console.WriteLine("Number can not be less then 1 and bigger then 100");
}
else{
string evenOdd = N % 2 == 0 ? "even" : "odd";
if(evenOdd == "even"){
if(N >=2 || N <= 5){
Console.WriteLine("Not Weird");
}
else if(N >= 6 || N <= 20){
Console.WriteLine("Weird");
}
else{
Console.WriteLine("Not Weird");
}
}
if(evenOdd == "odd"){
Console.WriteLine("Weird");
}
}
首先检查输入的数字(本例为N)是否大于100小于0,然后声明字符串变量,同时用三元运算初始化,检查“是偶数还是奇数” (在这里我称她为“evenOdd”)。 如果是偶数,则“evenOdd”的值将是偶数,反之亦然。 因为任务要求是(如果是偶数并且 N >= 2 和 N <= 5 打印“Not Weird”,N >= 6 和 N <= 20 打印“Weird”,N >= 20 打印“Not Weird”并且还如果是“even”打印“Not Weird”和“odd”打印“Weird”,首先检查这个“if”里面的“evenOdd”是否是“even”,我做剩下的检查(N >= 2 or N < = 5 打印“Not Weird”等等)之后(evenOdd 是偶数)我再做一次检查(如果 evenOdd 是奇数打印“Weird”)。简而言之:N 如果是 6,将检查第一次检查并返回“false” ”,然后会进入“else”。因为6是“偶”,那么“evenOdd”的值会是“偶”,会进入第一个“if,因为在第一次检查时它大于5,返回false,因为它是 6,它将进入下一个检查,它返回 true 并打印“Weird”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.