简单的If-Else问题,请建议:
我的目标如下:
“给定整数n,执行以下条件操作:
如果n为奇数,则打印“怪异”
如果n为偶数,并且在2到5的包含范围内,则打印“不奇怪”
如果n为偶数并且在6到20的包含范围内,则打印“怪异”
如果n为偶数且大于20,则打印“不怪异”。
完成后,我使用的一个网站会自动检查涉及到这个问题的所有8个测试用例,其中有1个是我不正确的,其他的都是正确的。
测试用例如下:
输入(stdin)=29
输出(stdout)=不奇怪
预期输出=怪异
这就是我到目前为止所做的工作:
import java.util.regex.*;
public class Solution {
private static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
int N = scanner.nextInt();
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
if(N % 2 == 0 & N >= 2 & N <= 5){
System.out.println("Not Weird");
} else if (N >= 6 & N <= 20){
System.out.println("Weird");
} else if (N > 20){
System.out.println("Not Weird");
} else {
System.out.println("Weird");
}
scanner.close();
}
}
有什么我错过的吗??
您的代码使用了一个if
/else if
块链,这意味着4个“缩进”的system.out
行中只有一个可以运行。
所以,就…。做程序员做的事。调试此代码。如果必须的话,拿出一支笔,“在脑子里”运行这段代码。
假设N是21。这是奇怪的,所以,这是‘怪异',它应该就这样结束了。
所以让我们来了解一下:
是n
所有这些内容:
n%2==0
)显然不是,所以接下来是第二个条件。
N是6或更多20或更少吗?不,继续到第三个。
N大于20吗?是的,所以not weird
被打印出来,就是这样。
好了,答错了。
我可以给你写正确的答案,但你的目标大概是学东西。您可能需要考虑为什么在编写代码时决定将问题描述翻过来。为什么问题描述以‘如果它是奇怪的,那么答案是奇怪的,没有例外’开头,而您的代码却以一个完全不同的情况(偶数和2到5之间)开头?
结束语:
>
您对扫描器的“跳过”调用很奇怪,不需要。您需要的是,在制作完一个扫描器之后,立即运行scanner.usedelimiter(“\\r”)
,它用一个简单得多的字母覆盖了这个巨大的球,实际上可以执行您想要的操作。
&
与&
在双方都是布尔人时的应用:这基本上是一回事;唯一的变化是使用&
时,代码“快捷方式”--如果答案已经很清楚,从左到右,那么就不会计算更多的表达式。这并不意味着什么,除非计算表达式有副作用。例如,如果您有:public boolean foo(){system.out.println(“eval”);}
,则false&foo()
将打印eval
,而false&foo()
不会;false
表示无论foo()
做什么,'and'都是false。换句话说,&&
是“正确的”,因为这是Java程序员的编写方式,而且它“更有效”,但实际效果在您的特定代码中没有意义,所以这不会破坏或使您的算法:)
我想学习如何编写JUnit测试,但我完全失败了。 这是我的测试: 问题是这个简单的断言已经失败了。返回的列表是空的。我知道,我对这一切都不熟悉,但是从我的角度来看,失败是如此出乎意料,以至于我没有办法解决这个问题。 以下是全部代码(不太多): 要测试的功能就是这个,我知道它是有效的: 实际上,我只是想学习如何编写这样的测试,但是几天来我一直没有写出来。有相当多的例子和解释,但是不管我做什么尝试,我
我不熟悉匕首。我创建了一个非常简单的单元测试,试图理解我应该如何使用dagger。不幸的是,它失败了。我可能还不了解匕首的一些基本原理。 而我的测试课失败了 我认为dagger会将B注入A,因为A希望注入B,DaggerModule包含一个@Providers注释方法,该方法创建B。 更新: 我发现当我像这样编写模块类时 将B注入A作品中。然而,我不理解为什么当模块有一个构造a实例的带注释的方法时
本文向大家介绍对vue v-if v-else-if v-else 的简单使用详解,包括了对vue v-if v-else-if v-else 的简单使用详解的使用技巧和注意事项,需要的朋友参考一下 首先vue.js请注意 2.1.0版本以上方可使用v-else-if 页面展示如下: vue.js下载:https://github.com/vuejs/vue 以上这篇对vue v-if v-els
我有一个简单的测试用例: FileManager中的函数删除 /myDir下的所有文件,然后再次保留文件。 如上所述,我有一个。运行时,我可以按以下顺序查看所有打印: 但是,测试在失败。有两件事我不明白: > 我不明白,它在中失败了,为什么我仍然可以看到打印的,听起来就像是失败了,它没有停止运行,而是继续运行下一个测试?JUnit测试用例中的场景背后发生了什么?? 我不明白的另一件事是为什么tes
这是我的问题代码 假设a=1,b=2,c=3,...,z=26的值。您将得到一个数字字符串S。 编写一个程序,返回可以从给定字符串生成的所有可能代码的列表。
Perl条件语句有助于决策,这需要程序员指定一个或多个要由程序评估或测试的条件,以及在条件被确定为真时要执行的一个或多个语句,以及可选的其他条件如果确定条件为假,则执行语句。 以下是大多数编程语言中的典型决策结构的一般性 - 数字0,字符串'0'和“”,空列表()和undef在布尔上下文中都是false ,所有其他值都为true 。 否定真正的价值! 或not返回特殊的假值。 Perl编程语言提供