public class Main
{
public static void main(String[] args) {
int i=0;
int j=10;
if(i>0)
if(j>0)
System.out.println("Hello World");
else
System.out.println("else");
}
}
期望的答案是"else"
,
由于i=0
,因此应执行ELSE
。
但输出为"Hello World"
将花括号添加到外部if
时,代码工作正常。
答案 0 :(得分:3)
您的代码不打印任何内容。
根据文档:
Java编程语言(例如C和C ++)以及之前的许多编程语言,任意决定了else子句可能属于最内部的子句。
在使用嵌套的if而不带大括号的情况下,else块链接到最近的if。 因此,您的代码与此类似:
function L_MovieList({title, poster, genres, synopsis,language,runtime,year,rating,likes,trcode}) {
console.log(likes);
console.log("here"+trcode)
let url = JSON.stringify({trcode});
let url_path = "http://www.youtube.com/watch?v="+{url};
return (
<div className="L_MovieList">
<a href={url_path}>예고편</a>
</div>
)
}
答案 1 :(得分:0)
没有大括号的else
属于第二个(内部)if
语句,因此如果第一个(外部)if语句的值为false
,则不会到达该括号。
等效于:
if(i>0) {
if(j>0) {
System.out.println("Hello World");
} else {
System.out.println("else");
}
}
答案 2 :(得分:0)
此代码段将为您提供所需的输出:
int i = 0;
int j = 10;
if(i>0) {
if(j > 0)
System.out.println("Hello World");
}
else
System.out.println("Else");
原始代码中的问题是您有以下声明:
if(i>0)
if(j>0)
System.out.println("Hello World");
在这种情况下,系统正在评估第一个为True的if语句,但是由于它没有花括号,因此不会将其视为嵌套的if语句,因为您的范围内有多个语句(另一个if语句和要封装在其作用域内的System.out.println语句)。因此它永远不会评估为True。但是,else语句链接到if(j <0)语句,因此else语句在这种情况下也不会触发。因此,您最终将无法执行代码。为了解决这个问题,我将第二个if语句放在带有括号的第一个if语句范围内。在此示例中,else语句不必在花括号内。既然系统已经知道第二条if语句嵌套在第一条if语句的范围内,则else语句链接到第一条if语句,并且在我不大于0时将执行。