「头歌实践教学平台」面向对象程序设计 6-2-3 数组综合应用

 第1关:求转置矩阵
任务描述

本关任务: 输入9个整数,按3行3列的格式存入二维数组ma,按矩阵的格式输出数组ma;计算矩阵ma的转置矩阵mb;按矩阵的格式输出数组mb。

相关知识

为了完成本关任务,你需要掌握:1. 数组的创建,2.如何遍历数组,3.如何求转置矩阵。

本题思路为: (以2*3的矩阵为例)

设矩阵a和b分别用二维数组a[2][3] 和b[3][2]表示,则任务实现的步骤如下。

(1)输入2行3列的6个数据,分别存入数组a中,可用双重循环实现;

(2)计算转置矩阵:分析数组a中的每个元素a[i][j]应该赋给数组b中的哪个元素?
a[0][0] --> b[0][0]

a[0][1] --> b[1][0]

a[0][2] --> b[2][0]

a[1][0] --> b[0][1]

a[1][1] --> b[1][1]

a[1][2] --> b[2][1]

分析规律:对于每个数组元素a[i][j],应该放到数组b中的元素b[j][i]的位置。 然后用双重循环遍历数组a,将每个元素赋给b中的对应元素即可。

(3)输出数组b的元素,按行输出,即为矩阵的样式。可用双重循环实现遍历数组b,将每个元素输出。注意输出一行后要换行。

测试说明

平台会对你编写的代码进行测试:

测试输入:1 2 3 4 5 6 7 8 9 ;

预期输出:

原始矩阵

1 2 3

4 5 6

7 8 9

转置后的矩阵

1 4 7

2 5 8

3 6 9


import java.util.Scanner;

public class ExchangeMatrix {

public static void main(String[] args) {
        int[][] ma = new int[3][3];
        int[][] mb = new int[3][3];

        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                ma[i][j] = sc.nextInt();
            }
        }

        // 输出矩阵ma
        System.out.println("原始矩阵");
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.printf("%5d" , ma[i][j]);
            }
            System.out.println();
        }

        // 计算转置矩阵mb
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                mb[j][i] = ma[i][j];
            }
        }

        // 输出矩阵mb
        System.out.println("转置后的矩阵");
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.printf("%5d", mb[i][j]);
            }
            System.out.println();
        }
    }
}

第2关:字符串压缩
任务描述

本关任务:字符串压缩。若输入字符串: “aabbbccdaa” ,计算每个连续的字符的个数,并生成一个新的字符串:“a2b3c2d1a2”。

相关知识

为了完成本关任务,你需要掌握:1. 字符串的输入,2. 遍历字符串,3.字符串的连接。

字符串输: nextLine()

字符串的遍历: 取出每个字符 charAt(k)

字符串的连接: +

/*输入字符串:“aabbbccdaa” ,生成字符串:“a2b3c2d1a2”*/
import java.util.Scanner;

public class StringPress {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		System.out.println("输入一行字符");
		String str = sc.nextLine();
		
     StringBuilder compressedStr = new StringBuilder();
        int count = 1;
        char prevChar = str.charAt(0);

        for (int i = 1; i < str.length(); i++) {
            char currentChar = str.charAt(i);
            if (currentChar == prevChar) {
                count++;
            } else {
                compressedStr.append(prevChar);
                compressedStr.append(count);
                prevChar = currentChar;
                count = 1;
            }
        }
        compressedStr.append(prevChar);
        compressedStr.append(count);

		System.out.println("压缩后的字符串"+compressedStr);
   }
}

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值