我有以下代码:
import java.util.Scanner;
import java.util.Arrays;
public class Program11 {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.print("Number of lockers:");
int number = input.nextInt();
System.out.print("Show stages [y/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';
}
for (int i = 0; i<1;i++){
arrayLockers[i] = lockers;
}
for(int i = 2; i<=n; i++){
for(int z = 1; z<n; z++){
for (int w = i-1; w <= n; w += i){
lockers[w] = 'X';
}
arrayLockers[z] = lockers;
}
}
return arrayLockers;
}
}
输出适用于 n = 10:
> run Program11
Number of lockers: 10
Show stages [y/n]? y
OXXXXXXXXX
OXXXXXXXXX
OXXXXXXXXX
OXXXXXXXXX
OXXXXXXXXX
OXXXXXXXXX
OXXXXXXXXX
OXXXXXXXXX
OXXXXXXXXX
OXXXXXXXXX
>
更衣室问题如下:有 n 个学生和 n 个储物柜。第一个学生打开了所有的储物柜。第二个学生关闭储物柜 2,4,6,8,.... 第三个学生关闭储物柜 3,6,9,12,... 这种模式不断重复,直到所有 n 个学生都离开。
我的任务:
对于给定的 n,我应该在每个阶段展示储物柜。“X”代表封闭,“O”代表开放。我应该只使用数组。显然,这是一遍又一遍地重复相同的数组,这是不正确的。我使用getStages方法返回一个多维数组“arrayLockers”来存储每个阶段。谁能告诉我哪里出错了?
预期输出为:
OOOOOOOOOO
OXOXOXOXOX
OXXXOXXXXX
OXXXOXXXXX
OXXXXXXXXX
OXXXXXXXXX
OXXXXXXXXX
OXXXXXXXXX
OXXXXXXXXX
OXXXXXXXXX
互换的青春
相关分类