首页 > 解决方案 > 有谁知道为什么我的 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);
  }
}

标签: javaif-statement

解决方案


由于您没有花括号,因此您的缩进是错误的。你实际编码的是这样的:

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);
    }
}

为了防止这样的错误,通常建议始终使用花括号。


推荐阅读