代码如下:
public class InnerLoops {
public static void main(String[] args) {
String a = "0123456789 abcdefghijklmnopqisrtuvwxyz";//可变
int rows = 9 ;//可变
char[][] c = new char[rows][];
for(int i=0; i<rows; i++)
c[i]=a.toCharArray();
inner(c,0,0);
}
public static final void inner(char[][] array,int currentRow,int currentColumn){
if(currentColumn<array[currentRow].length){
if(currentRow==array.length-1){
print(array);
}
if(hasNext(array,currentRow)){
inner(array,currentRow+1,0);
}
ring(array,currentRow);
inner(array,currentRow,currentColumn+1);
}
}
private static final boolean hasNext(char[][] array, int row) {
return array.length>row+1;
}
private static final void print(char[][] array) {
System.out.println(toString(array));
}
private static final String toString(char[][] array) {
String s = "";
for(int i=0; i<array.length; i++)
s+=(array[i][0]);
return s;
}
//使row行上的数往前推一位,溢出的0位补到最后一位
private static final void ring(char[][] array, int row) {
char t = array[row][0];
for(int i=1; i<array[row].length; i++)
array[row][i-1]=array[row][i];
array[row][array[row].length-1]=t;
}
}
public class InnerLoops {
public static void main(String[] args) {
String a = "0123456789 abcdefghijklmnopqisrtuvwxyz";//可变
int rows = 9 ;//可变
char[][] c = new char[rows][];
for(int i=0; i<rows; i++)
c[i]=a.toCharArray();
inner(c,0,0);
}
public static final void inner(char[][] array,int currentRow,int currentColumn){
if(currentColumn<array[currentRow].length){
if(currentRow==array.length-1){
print(array);
}
if(hasNext(array,currentRow)){
inner(array,currentRow+1,0);
}
ring(array,currentRow);
inner(array,currentRow,currentColumn+1);
}
}
private static final boolean hasNext(char[][] array, int row) {
return array.length>row+1;
}
private static final void print(char[][] array) {
System.out.println(toString(array));
}
private static final String toString(char[][] array) {
String s = "";
for(int i=0; i<array.length; i++)
s+=(array[i][0]);
return s;
}
//使row行上的数往前推一位,溢出的0位补到最后一位
private static final void ring(char[][] array, int row) {
char t = array[row][0];
for(int i=1; i<array[row].length; i++)
array[row][i-1]=array[row][i];
array[row][array[row].length-1]=t;
}
}