如何将char 1d数组转换为2d数组,然后通过每次读取每个列来打印2d数组。例如,使用参数"-encrypt abcd"
public class CHARSTRING {
public static void main(String[] args) {
String encrypt = args[0];
String letters = args[1];
//length of letters to be encrypted
int n = letters.length();
char Rows [] = letters.toCharArray();
if (encrypt.equals("-encrypt")) {
if ( (n*n)/n == n) {
int RootN = (int) Math.sqrt(n); //find depth and width of 2d array
char [][] box = new char [RootN][RootN]; //declare 2d array
for (int i=0; i<RootN; i++) {
for (int j=0; j<RootN; j++) {
box[i] = Rows;
System.out.println(Rows);
//输出4行:abcd
,但我试图得到的输出是"acbd"
在最后的双循环中,一个循环用于行,一个用于列。不要使用:
for (int i=0; i<RootN; i++) {
for (int j=0; j<RootN; j++) {
box[i] = Rows;
System.out.println(Rows);
}
}
使用println打印Rows的每个值,因此在每行后面添加一个"n"。相反,请尝试使用:
for (int i=0; i<RootN; i++) {
for (int j=0; j<RootN; j++) {
box[i] = Rows;
System.out.print(Rows);
}
System.out.println();
}
这样,所有的值都应该打印在同一行,然后换一行。