任务描述
本关任务:对给定二维字符数组排序,并输出排序后的结果。
相关知识
为了完成本关任务,你需要掌握:什么是二维字符数组。
二维字符数组
二维字符数组的创建、初始化以及元素的引用与二维数值数组是一样的,唯一的区别在于,二维字符数组存储的是字符。他们的区别体现在创建数组的时候。
示例:创建二维数值数组和字符数组。
// 创建一个用于存储整数的二维数值数组。
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[i].length; j++) { // 每个一维数组的长度 int n = j + 1; for (int m = i; m < a.length; m++) { // 排序 for (; n < a[i].length; n++) { if (a[i][j] < a[m][n]) { char max = a[m][n]; a[m][n] = a[i][j]; a[i][j] = max; } } n = 0; // 此处是给n从第二个一维数组开始取0这个坐标 } } } // 第二步:输出排序后的数组 for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { System.out.print(a[i][j] + " "); } System.out.println(); } /********** End **********/ } }