P5730 【深基5.例10】显示屏(java)

题目描述

液晶屏上,每个阿拉伯数字都是可以显示成 3 × 5 3\times5 3×5 的点阵的(其中 X 表示亮点,. 表示暗点)。现在给出数字位数(不超过 100 100 100)和一串数字,要求输出这些数字在显示屏上的效果。数字的显示方式如同样例输出,注意每个数字之间都有一列间隔。

输入格式

第一行输入一个正整数 n n n,表示数字的位数。

第二行输入一个长度为 n n n 的自然数。

输出格式

输出五行,表示显示屏上的数字。

1.题目分析

该题考查了三维数组的使用,值得一提的是 ,读懂题意很重要,每一个数字对应一个五行三列的矩阵图形,且数字之间相隔一列,这里应该是一列.
第一次我使用了c语言通过了测试案例,但在编译平台却没有通过,本人觉得应该是编译平台是在LINUX上运行的测试代码,与我在Windows上运行结果有差异,所以 通过不了,然后我决定换Java来写这道题,就没有问题了,因为Java本身就是设计优势就是跨平台的高级语言。

2.题目思路

首先定义一个三维字符数组,代表第i个数字k行j列,这样就是表示了数字和图案之间的对应关系,
键入数字个数,将数字串键入到字符数组中,
写一个三重循环:先打印列,再打印每个数字的所有列,在每个数字末尾列的后面打印小数点,最后一个数字除外,这里需要做一个判断,打印完所有数字的第某行的所有列之后,再打印所有行,再换行。

3.代码演示(JAVA)


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        //定义一个字符串数组,表示第i个数字j行k列
        char[][][] arr = {
                {//0
                        {'X', 'X', 'X'},
                        {'X', '.', 'X'},
                        {'X', '.', 'X'},
                        {'X', '.', 'X'},
                        {'X', 'X', 'X'}
                },
                {//1
                        {'.', '.', 'X'},
                        {'.', '.', 'X'},
                        {'.', '.', 'X'},
                        {'.', '.', 'X'},
                        {'.', '.', 'X'}
                },
                {//2
                        {'X', 'X', 'X'},
                        {'.', '.', 'X'},
                        {'X', 'X', 'X'},
                        {'X', '.', '.'},
                        {'X', 'X', 'X'}
                },
                {//3
                        {'X', 'X', 'X'},
                        {'.', '.', 'X'},
                        {'X', 'X', 'X'},
                        {'.', '.', 'X'},
                        {'X', 'X', 'X'}
                },
                {//4
                        {'X', '.', 'X'},
                        {'X', '.', 'X'},
                        {'X', 'X', 'X'},
                        {'.', '.', 'X'},
                        {'.', '.', 'X'},
                },
                {//5
                        {'X', 'X', 'X'},
                        {'X', '.', '.'},
                        {'X', 'X', 'X'},
                        {'.', '.', 'X'},
                        {'X', 'X', 'X'}
                },
                {//6
                        {'X', 'X', 'X'},
                        {'X', '.', '.'},
                        {'X', 'X', 'X'},
                        {'X', '.', 'X'},
                        {'X', 'X', 'X'}
                },
                {//7
                        {'X', 'X', 'X'},
                        {'.', '.', 'X'},
                        {'.', '.', 'X'},
                        {'.', '.', 'X'},
                        {'.', '.', 'X'}
                },
                {//8
                        {'X', 'X', 'X'},
                        {'X', '.', 'X'},
                        {'X', 'X', 'X'},
                        {'X', '.', 'X'},
                        {'X', 'X', 'X'}
                },
                {//9
                        {'X', 'X', 'X'},
                        {'X', '.', 'X'},
                        {'X', 'X', 'X'},
                        {'.', '.', 'X'},
                        {'X', 'X', 'X'}
                }

        };


        int n;
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();

        char a;
        //将一串数字存入数组
        String str = sc.next();
        char[] num = str.toCharArray();

        //打印行
        for (int j = 0; j < 5; ++j) {
            //枚举每一个数,打印字符串数字对应元素的第j行的所有列
            for (int i = 0; i < n; ++i) {
                //打印列
                for (int k = 0; k < 3; ++k) {
                    System.out.print(arr[num[i] - '0'][j][k]);
                }
                //每个数字之间打印一列.  最后一行除外
                if (i != n - 1) {
                    System.out.print(".");
                }
            }
            System.out.println();
        }

    }
}


你可能感兴趣的:(刷题go,go,go,算法,java)