将字符串打印成W型

将字符串打印成W型

 

思路分析:

1) 当n=2:

    行数就是从0变成1,从1变成0,列数则一直增加,这里我们采用二维数组来存取,行数就是n(输入决定),列数就是字符串的长度。

2)当n>2:

      我们以3为例子,行数变化的规律:从0-2;2-0;列数一直增加。这里我们用flag来标注行数是增加还是减少。

3)  输出,数组的其他位置为空char c='\0'; 

代码分享:

package StringDemo;
//

import java.util.*;

public class StringDemo13 {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        int n = sc.nextInt();
        //System.out.println(str);
        //System.out.println(n);
        //这里n为行数
        int col = str.length();//这里col是列数
        char[][] arr = new char[n][col];
        boolean flag = true;//
        arr[0][0] = str.charAt(0);
        int x = 1;
        if (n == 2) {//行数等于2的情况
            for (int j = 1; j < col; j++) {//列数
                for (int i = x; i < n; i++) {//行数
                    if (x == 1) {
                        arr[i][j] = str.charAt(j);
                        x = 0;
                        break;
                    } else {
                        arr[i][j] = str.charAt(j);
                        x = 1;
                        break;
                    }
                }
            }
        } else {//行数大于2的情况
            for (int j = 1; j < col; j++) {//列数
                for (int i = x; i < n; i++) {//行数

                    if (i != (n - 1) && flag == true) {//不是最后一行,这个是下降的\
                        arr[i][j] = str.charAt(j);
                        x = i + 1;
                        break;
                    } else if (i != (n - 1) && flag == false) {
                        arr[i][j] = str.charAt(j);
                        x = i - 1;
                        if (x == 0) {
                            flag = !flag;
                        }
                        break;
                    } else {
                        flag = !flag;
                        arr[i][j] = str.charAt(j);
                        x = i - 1;
                        break;

                    }
                }
            }
        }


        for (int i = 0; i < n; i++) {
            for (int j = 0; j < col; j++) {
                //System.out.print("i是"+i+"j是"+j+" "+arr[i][j]);
                if (arr[i][j] == '\0') {//空字符
                    System.out.print(" " + " ");
                } else {
                    System.out.print(arr[i][j] + " ");
                }

            }
            System.out.println();
        }
        //System.out.println("-----");
        //System.out.println(arr[0][1]);


    }
}