思路分析:
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]);
}
}