📅  最后修改于: 2023-12-03 14:43:03.721000             🧑  作者: Mango
本文将介绍一个使用Java编写的程序,该程序可对地图进行排序操作。地图排序是指根据用户按键输入的顺序,对地图上的元素进行重新排序。我们将使用Java语言编写一个简单的控制台程序来实现这一功能。
import java.util.Arrays;
import java.util.Scanner;
public class MapSorter {
public static void main(String[] args) {
// 创建地图
char[][] map = {
{'A', 'B', 'C'},
{'D', 'E', 'F'},
{'G', 'H', 'I'}
};
// 打印地图
printMap(map);
// 读取用户按键输入
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("请输入按键操作('w':上移,'s':下移,'a':左移,'d':右移,'q':退出):");
char input = scanner.next().charAt(0);
// 根据用户输入操作对地图进行排序
if (input == 'w') {
sortByMove(map, 0, -1);
} else if (input == 's') {
sortByMove(map, 0, 1);
} else if (input == 'a') {
sortByMove(map, -1, 0);
} else if (input == 'd') {
sortByMove(map, 1, 0);
} else if (input == 'q') {
System.out.println("程序已退出。");
break;
} else {
System.out.println("无效的按键操作,请重新输入。");
}
// 打印排序后的地图
printMap(map);
}
}
// 按照给定的移动方向对地图进行排序
private static void sortByMove(char[][] map, int dx, int dy) {
int rows = map.length;
int cols = map[0].length;
boolean[][] visited = new boolean[rows][cols];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (!visited[i][j]) {
int x = i;
int y = j;
char temp = map[i][j];
while (isValidPosition(x + dx, y + dy, rows, cols) && !visited[x + dx][y + dy]) {
map[x][y] = map[x + dx][y + dy];
visited[x][y] = true;
x += dx;
y += dy;
}
map[x][y] = temp;
visited[x][y] = true;
}
}
}
}
// 判断给定的坐标是否在地图范围内
private static boolean isValidPosition(int x, int y, int rows, int cols) {
return x >= 0 && x < rows && y >= 0 && y < cols;
}
// 打印地图
private static void printMap(char[][] map) {
for (char[] row : map) {
System.out.println(Arrays.toString(row));
}
System.out.println();
}
}
注意: 请确保您的Java环境已正确配置。