任务描述
本关任务:对给定二维字符数组排序,并输出排序后的结果。
相关知识
为了完成本关任务,你需要掌握:什么是二维字符数组。
二维字符数组
二维字符数组的创建、初始化以及元素的引用与二维数值数组是一样的,唯一的区别在于,二维字符数组存储的是字符。他们的区别体现在创建数组的时候。
示例:创建二维数值数组和字符数组。
开始你的任务吧,祝你成功!
具体细节见代码注释:
还是有点小技巧:
// 创建一个用于存储整数的二维数值数组。
int[][] arr=new int[6][3];
// 创建一个用于存储字符的二维数值数组。
char[][] chars = new char[6][3];
-
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,对给定二维字符数组排序(把所有元素按照字母降序排序),并输出排序后的结果,输出二维数组时注意数组中的每行数字之间用空格分开,每行中最后一个数字后面也要有一个空格。
注意:不要改变数组的大小范围。
测试说明
平台将运行你编写的程序代码,若你的运行结果与预期输出一致,则通关。
预期输出:
z v t s
s r r q
p o h g
e d d a
具体细节见代码注释:
还是有些小细节的:
public class Transpose {
public static void main(String[] args) {
// 定义二维数组并初始化
char[][] a = {{'d','v','g','r'},{'h','s','r','a'},{'q','e','t','z'},{'o','p','d','s'}};
// 请在Begin-End间编写代码
/********** Begin **********/
// 第一步:排序,从二维数组的第一个元素开始,依次取每个元素与该元素之后的每个元素比较大小
for(int i = 0; i < a.length; i++){
for(int j = 0; j < a[0].length; j++){
int s = j + 1; //开始行从开始列的下一列开始逐一比较
/*2*/ for(int m = i; m < a.length; m++){
for(; s < a[0].length; s++){
if(a[i][j] < a[m][s]){
char max = a[m][s];
a[m][s] = a[i][j];
a[i][j] = max;
} //当s++到了4,就直接被s=0初始为0后返回位置2
}
s = 0; //找完被比字母这一行的下一行就要从第一列又开始依次比较,所以列数s赋值0
}
}
}
for(int i = 0; i < 4; i++){
for(int j = 0; j < 4; j++){
System.out.print(a[i][j] + " ");
}
System.out.println();
}
// 第二步:输出排序后的数组
/********** End **********/
}
}