# Java关于if语句中有多个条件需要判断，各个条件间的先后顺序有要求吗

``````package exercise;
import java.util.Scanner;

/**
* @author lzy
* 数组算法
* 回形数，也称回形矩阵
*/
public class RoundMatrix {
/**
* 定义常量代表含义
* 初始向右，设置RIGHT = 1
*/
private static final int RIGHT = 1;
private static final int DOWN = 2;
private static final int LEFT = 3;
private static final int UP = 4;

public static void main(String[] args) {
//1.创建数组
//根据键盘输入num值决定回型矩阵的行数列数
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数字：");
int num = scanner.nextInt();
int[][] roundMatrix = new int[num][num];
//表示该矩阵元素的总数目
int count = num * num;

//2.赋值
//定义横纵坐标，方向，循环次数计数器
int xAis = 0;
int yAis = 0;
int direction = RIGHT;
int recycleNumber;

for (recycleNumber = 1; recycleNumber <= count; recycleNumber ++){
//方向向右时的处理
switch (direction) {
case RIGHT:
if (roundMatrix[xAis][yAis] == 0 && yAis < num) {
roundMatrix[xAis][yAis] = recycleNumber;
yAis ++;
} else {
direction = DOWN;
xAis++;
yAis--;
//进入else的recycleNumber需减1，保证下次循环时的值正确
recycleNumber--;
}
break;
//方向向下时的处理
case DOWN:
if (roundMatrix[xAis][yAis] == 0 && xAis < num) {
roundMatrix[xAis][yAis] = recycleNumber;
xAis ++;
} else {
direction = LEFT;
xAis--;
yAis--;
recycleNumber--;
}
break;
//方向向左时的处理
case LEFT:
if (roundMatrix[xAis][yAis] == 0 && yAis >= 0) {
roundMatrix[xAis][yAis] = recycleNumber;
yAis --;
} else {
direction = UP;
xAis--;
yAis++;
recycleNumber--;
}
break;
//向上
case UP:
if (roundMatrix[xAis][yAis] == 0 && xAis >= 0) {
roundMatrix[xAis][yAis] = recycleNumber;
xAis --;
} else {
direction = RIGHT;
xAis++;
yAis++;
recycleNumber--;
}
break;
default:
}

}
//3.遍历
for (int[] matrix : roundMatrix) {
for (int i : matrix) {
System.out.print(i + " ");
}
System.out.println();
}
}
}
``````

``````Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at exercise.RoundMatrix.main(RoundMatrix.java:40)
``````

``````case RIGHT:
if (yAis < num && roundMatrix[xAis][yAis] == 0)
``````
• 写回答

#### 4条回答默认 最新

• CSDN专家-sinJack 2021-07-12 00:46
关注

判断先后顺序肯定有关系。&&的意思是满足条件一才执行条件二，如果条件1不满足则不会执行条件2。拿你的问题来说，只有索引位置满足条件的时候，才会去进一步比较索引位置对应的值。否则，先取值的话，可能你的索引位置不满足要求，被用来取值了，导致数组越界异常。

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

• 已采纳回答 7月12日
• 创建了问题 7月12日

#### 悬赏问题

• ¥20 vscode虚拟环境依赖包未安装
• ¥15 odoo17关于owl开发js代码问题
• ¥15 光纤中多普勒频移公式的推导
• ¥15 怎么制作一个人脸识别门禁系统
• ¥20 大华dss监控平台网络关闭登不进去
• ¥15 请使用蚁群算法解决下列问题，并给出我完整的代码
• ¥20 关于php录入完成后，批量更新数据库
• ¥15 请教往复密封润滑问题
• ¥15 cocos creator发布ios包
• ¥15 comsol压电材料数据