要求:
输入:[[1,2,3],[4,5,6],[7,8,9]]
输出:[[7,8,9],[4,5,6],[1,2,3]]
给定二维数组反转方法:
public int[][] convert (int[][] matrix) {}
分析:
如果这个题没有给二维数组反转的方法,把输入当做字符串去处理会简单一些,但是,它给了。。。这就需要我们去解析字符串,填充一个二维数组,然后作为参数传给convert方法
下面给出我的代码,重点部分我都做了注释,大家应该可以看懂
public class Test6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String ss = sc.next();
String ss1 = ss.substring(2,ss.length()-2); //去掉开头的2个[ 和 结尾的2个]
String[] ss2 = ss1.split("],\\["); //按照],[去分割,得到长度为3的字符串数组
int[][] arr = new int[ss2.length][]; //我们需要填充的二维数组的第一维的长度就是ss2.length
for (int i = 0; i < ss2.length; i++) {
String[] tmp = ss2[i].split(","); //此时得到的字符串数组tmp中每个元素都是只含数字的字符串
arr[i] = new int[tmp.length];
for(int j = 0; j < tmp.length; j++) {
arr[i][j] = Integer.valueOf(tmp[j]); //利用Integer.valueOf()方法将一个字符串转换为int类型
}
}
convert(arr);
//符合题目要求的格式化输出
System.out.print("[");
for (int i = 0;i < arr.length;i++) {
System.out.print("[");
for (int j = 0;j < arr[i].length;j++) {
if (j == arr[i].length - 1) {
System.out.print(arr[i][j]);
}else {
System.out.print(arr[i][j] + ",");
}
}
if (i == arr.length-1) {
System.out.print("]");
}else {
System.out.print("],");
}
}
System.out.print("]");
}
public static int[][] convert (int[][] matrix) {
int[] temp;
for (int i = 0; i < matrix.length / 2; i++) { //只需要将二维数组的第二维反转即可
temp = matrix[i];
matrix[i] = matrix[matrix.length-i-1];
matrix[matrix.length-i-1] = temp;
}
return matrix;
}
}
运行结果
欢迎大家一起交流!Java全套学习资料的电子版,我已经上传网盘,免费分享给大家,关注我的公众号,菜单栏–>技术相关–>免费资源即可领取,还有网课查答案,包括学习通、智慧树、mooc,内容涵盖计算机、政治等等,还有其他免费资源(简历模板、电子版书籍和考试资料等等),说不准大家会有用(分享干货)!
扫码加关注吧!