1 回答

TA贡献1797条经验 获得超6个赞
您的代码存在一些问题。首先,您没有arrayLockers在复制之前分配内存。其次,您使用三个for循环(嵌套)使逻辑复杂化。只需两个嵌套循环即可完成。另外,您使用的是数组分配,我不确定它是否有效;所以我改变了System.arraycopy()我经常使用的它(或者你可以使用for循环手动完成)。
import java.util.*;
import java.lang.*;
import java.io.*;
class Program11 {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.print("Number of lockers:\n");
int number = input.nextInt();
System.out.print("Show stages [y/n]?\n");
String show = input.next();
if(show.equals("y"))
{
for (char[] lockers : getStages(number))
{
for (char c : lockers)
{
System.out.print("" + c);
}
System.out.println();
}
}
}
public static char[][] getStages(int n){
char[] lockers = new char[n];
char[][] arrayLockers = new char[n][];
for (int i = 0; i < n; i++) {
lockers[i] = 'O';
}
arrayLockers[0] = new char[lockers.length];
System.arraycopy(lockers, 0, arrayLockers[0], 0, lockers.length);
int cnt = 2;
for (int i = 1; i < n; i++) {
for (int j = i; j < n; j += cnt) {
lockers[j] = 'X';
}
arrayLockers[i] = new char[lockers.length];
System.arraycopy(lockers, 0, arrayLockers[i], 0, lockers.length);
cnt++;
}
return arrayLockers;
}
}
添加回答
举报