gpt4 book ai didi

Java:大括号在 if then else 中有所不同

转载 作者:行者123 更新时间:2023-12-01 23:00:07 28 4
gpt4 key购买 nike

在下面的程序中,如果我不将大括号放在 if then else 语句中,我会执行所有语句,导致扫描仪输入询问我问题 3 次。

import java.util.Scanner;

public class NestedIf
{
public static void main (String [] args)
{

System.out.println ("Who is the presiden of USA?");

String response ="";
String answer;

answer = "Obama";

Scanner input = new Scanner (System.in);
response = input.nextLine();

if (response.equals(answer))
System.out.println ("That is right");
else
System.out.println ("That is wrong");
response = input.nextLine();

if (response.equals(answer))
System.out.println ("That is right");
else
System.out.println ("That is wrong");
response = input.nextLine();

if (response.equals(answer))
System.out.println ("That is right");
else
System.out.println ("That is wrong - Bye");


}
}

结果是:

美国总统是谁?奥巴马没错奥巴马没错奥巴马没错

如果我放入大括号并使程序如下所示,程序会提出问题,当我回答正确时,其他语句不会执行。

import java.util.Scanner;

public class NestedIf
{
public static void main (String [] args)
{

System.out.println ("Who is the presiden of USA?");

String response ="";
String answer;

answer = "Obama";

Scanner input = new Scanner (System.in);
response = input.nextLine();

if (response.equals(answer))
System.out.println ("That is right");
else **{**
System.out.println ("That is wrong");
response = input.nextLine();

if (response.equals(answer))
System.out.println ("That is right");
else **{**
System.out.println ("That is wrong");
response = input.nextLine();

if (response.equals(answer))
System.out.println ("That is right");
else
System.out.println ("That is wrong - Bye");
**}**
**}**
}
}

结果是:
美国总统是谁?
奥巴马
没错

我的问题是为什么大括号在这里会有所不同,尽管我在这个论坛上读到大括号没有任何区别?

最佳答案

Java 不会根据空白改变其行为,因此在这种情况下,它无法知道 else 之后的代码块在哪里结束。

代码块可以在任何地方用大括号定义:{ line1;第2行;第3行; }。 if 语句或 else 语句的语法为:if(条件)代码;。如果您使用大括号,则代码将被替换为代码块,并且所有代码块都会被执行。

Java 会解释

if (condition)
line1;
line2;
line3;

同样的方式

if (condition) line1;
line2;
line3;

因为它们之间唯一的区别是空格。

它会解释

if (condition) {
line1;
line2;
line3;
}

作为

if (condition) { line1; line2; line3; }

同样,因为唯一的区别是空格。

同样的情况也适用于 elseifelse 语句,或者 trycatchfinallywhilefor 等。

关于Java:大括号在 if then else 中有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23492695/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com