【发布时间】:2016-11-23 05:55:45
【问题描述】:
我的任务要求:
设计一个程序,模拟人们走进剧院时剧院座位可能会被填满的情况。该程序应该通过尝试在最长的空闲座位序列的中间找到一个座位来最大化每个人之间的距离。程序应该询问用户座位的数量,然后在每次有新人占据座位时打印出图表(每行一张图表)。
到目前为止我有:
{
//...
System.out.println("Enter the amount of seats: ");
int seatNumber = input.nextInt();
boolean[] seatPosition = new boolean[seatNumber];
String result = "";
for(int n = 0; n < seatNumber; n++){
for(int i = 0; i < seatNumber; i++){
if(seatPosition[i] == false){
result += "_" + " ";
}else{
result += "X" + " ";
}
}
seatPosition[calculation(seatPosition)] = true;
result += "\n";
}
System.out.println(result);
}
public static int calculation(boolean[] values){
int position = 0;
int seatNumber = 0;
int largestCount = 0;
int count = 0;
for(int i = 0; i < values.length; i++){
if(values[seatNumber] == false){
while(values[seatNumber] == true){
count++;
seatNumber++;
}
}
if(count > largestCount){
position = seatNumber;
}
position = position + largestCount / 2 ;
}
return position;
}
十个座位的输出是:
_ _ _ _ _ _ _ _ _ _
_ _ _ _ _ X _ _ _ _
_ _ X _ _ X _ _ _ _
_ _ X _ _ X _ _ X _
_ X X _ _ X _ _ X _
_ X X _ X X _ _ X _
_ X X _ X X _ X X _
X X X _ X X _ X X _
X X X X X X _ X X _
X X X X X X X X X _
X X X X X X X X X X
我不知道如何比较空座位的长度以及如何返回最长的空座位序列中的中间座位。输出有 11 行,因为我想在座位被占用之前以及每次新座位被占用时显示座位。抱歉,如果我不是很具体,这是第一次在这个网站上提问。
【问题讨论】:
-
那么您的具体问题是什么?抛出一个任务并说“我不知道该怎么做”不是stackoverflow的工作方式。不过逻辑应该不难
-
你能解释一下这段代码有什么问题吗?它正在运行,你有输出吗?它是如何失败/崩溃的?
-
刚刚完成,很有趣。仅供参考,您的计算声明 6
int但只使用 2 并返回一个而不触及它。你可以从那个开始;)我已经用 3 个变量(可能不是最好的)完成了它。 -
我更改了方法内部的代码,但它只填充了第一个位置。