java – 这是短路的一个例子吗?

如果我要求用户输入一个int,并且需要在检查该索引处的数组之前检查它是否在数组的索引范围内,看它是否为空,那么这是“短路”的一个例子吗?因为如果数组大小只有5而用户输入15,那么我会得到一个ArrayIndexOutOfBoundsException.但是,如果我首先检查数字输入是否为0-4,然后检查最后的数组索引,它将保证在0-4之间.所以我的问题是:这是“短路”的一个例子吗?我将在代码中重述我所说的内容……

import java.util.Scanner;

public Class Reservation{

    Customer[] customers = new Customer[5];
    Scanner input = new Scanner(System.in);
    //some code

    private void createReservation(){

        System.out.print("Enter Customer ID: ");
        int customerIndex;
        if(input.hasNextInt()){
            customerIndex = input.nextInt();
            //is the if-statement below a short-circuit
            if(customerIndex < 0 || customerIndex >= 5 || customers[customerIndex] == null){
                System.out.print("\nInvalid Customer ID, Aborting Reservation");
                return;
            }   
        }
        else{
            System.out.print("\nInvalid Customer ID, Aborting Reservation");
        }
    //the rest of the method
    }
}

最佳答案 是的,这是正确使用短路的有效示例:

if(customerIndex < 0 || customerIndex >= 5 || customers[customerIndex] == null)

此代码仅在||的假设下有效一旦它变为真,就停止评估 – 否则,可以通过无效索引到达客户[customerIndex],从而触发异常.

点赞