java - 有谁知道为什么我的 else if 语句不起作用?
问题描述
此代码将三个数字从小到大排序。但是,我的 else 语句在第 15、18、23、26 和 31 行给了我 4 个错误。有谁知道为什么会这样?
import java.util.*;
public class sortnumber {
public static void main (String[] args) {
Scanner scan = new Scanner (System.in);
int num1, num2, num3, random;
num1 = scan.nextInt();
num2 = scan.nextInt();
num3 = scan.nextInt();
random = 0;
if (num1 < num2 && num1 < num3)
System.out.print (num1);
if (num2 < num3)
System.out.print (num2);
System.out.print (num3);
else
System.out.print (num3);
System.out.print (num2);
else if (num2 < num1 && num2 < num3)
System.out.print (num2);
if (num1 < num3)
System.out.print (num1);
System.out.print (num3);
else
System.out.print (num3);
System.out.print (num1);
else if (num3 < num2 && num3 < num1)
System.out.print (num3);
if (num2 < num1)
System.out.print (num2);
System.out.print (num1);
else
System.out.print (num1);
System.out.print (num2);
}
}
解决方案
由于您没有花括号,因此您的缩进是错误的。你实际编码的是这样的:
random = 0;
if (num1 < num2 && num1 < num3)
System.out.print (num1);
if (num2 < num3)
System.out.print (num2);
System.out.print (num3);
else // <===== ERROR
System.out.print (num3);
System.out.print (num2);
else if (num2 < num1 && num2 < num3) // <===== ERROR
System.out.print (num2);
if (num1 < num3)
System.out.print (num1);
System.out.print (num3);
else // <===== ERROR
System.out.print (num3);
System.out.print (num1);
else if (num3 < num2 && num3 < num1) // <===== ERROR
System.out.print (num3);
if (num2 < num1)
System.out.print (num2);
System.out.print (num1);
else // <===== ERROR
System.out.print (num1);
System.out.print (num2);
如果添加缩进指示的大括号,则会得到:
random = 0;
if (num1 < num2 && num1 < num3) {
System.out.print(num1);
if (num2 < num3) {
System.out.print(num2);
System.out.print(num3);
} else {
System.out.print(num3);
System.out.print(num2);
}
} else if (num2 < num1 && num2 < num3) {
System.out.print(num2);
if (num1 < num3) {
System.out.print(num1);
System.out.print(num3);
} else {
System.out.print(num3);
System.out.print(num1);
}
} else if (num3 < num2 && num3 < num1) {
System.out.print(num3);
if (num2 < num1) {
System.out.print(num2);
System.out.print(num1);
} else {
System.out.print(num1);
System.out.print(num2);
}
}
为了防止这样的错误,通常建议始终使用花括号。
推荐阅读
- node.js - brew 无法在 mac os big sur 上安装节点
- reactjs - 如何使用 React js 传递来自不同组件的值
- python - 如何根据索引位置划分列表?
- python - 在一天中的特定时间使用 gunicorn 运行 Web 应用程序的最佳方式是什么?
- scala - 在两个演员之间使用 pipeTo 时得到 akka 死信
- elasticsearch - 如何在 elastalert 规则中使用通配符
- active-directory - 将自定义属性添加到用户模式失败的 LDF
- f# - F# 中的元组与 * 星型类型
- javascript - Bootstrap - 以特定方式缩放图像
- c# - C# Google Calendar API - 凭据/Microsoft 帐户