本の質問:
よく研究された事実として、トイレにいる男性は一般的に、空いている場所の最も長い列の真ん中を占めることによって、すでに使用されているトイレからの距離を最大にすることを好みます.
たとえば、10 の屋台が空いている状況を考えてみましょう。_ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _
The first visitor will occupy a middle position:
_ _ _ _ _ _ X _ _ _
The next visitor will be in the middle of the empty area at the left.
_ _ X _ _ X _ _ _ _
屋台の数を読み取り、屋台がいっぱいになると、上記の形式で図を 1 つずつ出力するプログラムを作成します。ヒント: ブール値の配列を使用して、ストールが占有されているかどうかを示します。
私はこの質問のプログラミングに苦労しており、ブール値を適用する方法と、一般的に問題を解決する方法について混乱しています。私はこのコードを書いていますが、意味がないと思います。助けていただければ幸いです。
import java.util.Random;
import java.util.Arrays;
public class Stall
{
public static void main(String[] args)
{
Random random = new Random();
String[] array = {"_"," _ "," _ "," _ "," _ "," _ "," _ "," _ "," _ "," _"};
boolean filled = true; // Checking to see if stalls are completely filled
while (filled = true)
{
for (int i = array.length - 1; i > 0 ; i--)
{
String number = array[i];
if (!(number.equals("X"))) // if filled,all stalls would be marked as X
{
filled = false;
}
}
}
boolean found = false; //checking if "X" is found
while (filled = false)
{
while (found = false) // if not found generate a new number for array and set it to "X";
{
int number1 = random.nextInt(10) + 1;
if (!(array[number1].equals("X")))
{
array[number1] = "X";
found = true;
}
}
while (found = true)
{
int number2 = random.nextInt(10) + 1;
for ( int i = 0; i < array.length; i++)
{
if (!(array[i].equals("X")))
{
array[number2] = "X";
found = false;
}
}
}
System.out.println(Arrays.toString(array));
}
}
}