将字符串打印成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]); } }