如果这个问题过于简单,我会道歉,但我已经尝试了Google,但我找不到具体的答案(主要是因为我不知道如何说出我的问题)。
我只是想知道Java中的if语句是否可以有多个'then',即
public class test {
if (condition) {
then...;
then 2...?;
}
}
例如,第一个条件为真。第一个然后发生,它说抛出异常。我可以在之后添加另一个,这也会在抛出异常后发生吗?
感谢您寻找
编辑:我理解我的问题有点含糊不清。我想我想说的是这样的:public class test {
public String checkAnswer(String answer) throws Exception {
if (!a == b) {
throw new Exception;
this.ans = this.ans + a;
}
else {
return "You are wrong."
}
第二行(this.ans ......)是否允许存在?因为如果不满足条件,两者都会抛出新的异常并且该行都会出现吗?
答案 0 :(得分:3)
是的,你可以嵌套if block,如果这就是你所要求的。这是合法的Java:
if (foo) {
if (bar) {
System.out.println("both foo and bar are true");
} else {
System.out.println("foo is true, but bar is false");
}
} else {
if (bar) {
System.out.println("foo is false, but bar is true");
} else {
System.out.println("both foo and bar are false");
}
}
但这也可以用非嵌套方式编写:
if (foo && bar) {
System.out.println("both foo and bar are true");
} else if (foo && !bar) {
System.out.println("foo is true, but bar is false");
} else if (!foo && bar) {
System.out.println("foo is false, but bar is true");
} else {
System.out.println("foo and bar are both false");
}
修改强>
关于你的新代码:
public class test {
public String checkAnswer(String answer) throws Exception {
if (!a == b) {
throw new Exception;
this.ans = this.ans + a;
}
else {
return "You are wrong."
}
首先,它不会编译,你应该真的努力只发布编译的代码,或者如果你的问题是编译问题,那么你最好努力让它编译,然后你展示你的编译错误。
假设您向new Exception();
添加括号,您的编译器仍应显示问题,因为抛出异常下面的代码无法访问。
相反,您会希望throw异常下的行高于它。您还需要更正不平等声明:
if (a != b) { // ** note the different equality test
this.ans = this.ans + a;
throw new AnswerWrongException("some string here");
}
你有一个很棒的实验室 - 你的Java编译器和JVM,你应该测试这些东西并看看它告诉你什么,因为它可以在我们任何人之前给你一个正确而明确的答案。< / p>
答案 1 :(得分:1)
首先,不存在多种情况。但是,考虑到这个问题,
例如,第一个条件为真。第一个然后发生,它说抛出异常。我可以在之后添加另一个,这也会在抛出异常后发生吗?
你真的要求finally
阻止,所以请使用一个。
try {
if (condition) {
System.out.println("condition is true");
} else {
System.out.println("condition is false");
}
} finally {
System.out.println("This always prints");
}
修改强>
如果(a + b == c)为真,我可以在前一个程序段中放置两个不同的动作(a = a + b)和(b = b + c)
是。您可以使用+=
,因为您希望将算术结果分配给第一个术语 -
int a = 1;
int b = 2;
int c = 3;
if (a + b == c) {
a += b;
b += c;
}
System.out.printf("a=%d, b=%d, c=%d%n", a, b, c);
答案 2 :(得分:0)
不,if语句只能有一个。如果等等等等等等等等。我不是100%肯定,认为它可能还取决于编码语言。 虽然在java中,没有。
答案 3 :(得分:0)
if-block中的所有内容都会被执行:
public class test {
if (condition) {
methodA();
methodB();
}
}
这里,因为两个方法都在大括号({}
)之间,所以methodA()
和methodB()
都会被执行。
引入异常处理会根据您编写异常的方式更改答案。如果您编写它以使其突破methodA()
处的当前代码块,则不会执行methodB()
。当然,你必须故意以这种方式写作。
答案 4 :(得分:0)
这与if
陈述无关
你想要的是一个try-catch
块:
if (condition) {
try {
// some code that may throw exceptions
} catch (SomeException e) {
//
}
// some more code, which can also be in anoth try-catch
}