-3

我被困在阵列问题上,可以使用一些帮助。

第一个访客将占据中间位置:

        _ _ _ _ _ X _ _ _ _

下一位访客将在左侧空白区域的中间,因为这是最长的未占用位置序列:

        _ _ X _ _ X _ _ _ _

etc...

我有一个良好的开端,需要帮助继续。这是我的代码,请帮助我。我已经创建了布尔数组,但我不知道如何打印出它的内容或查看它,所以我知道哪些元素是真或假,所以我可以填写数组的其余部分。

import java.util.Scanner;
public class Homework06 {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner (System.in);
        int answer = 0;
        String start="";

        answer=promptForNumberOfStalls();
        int[] stalls=new int[answer];
            boolean firstPerson[]=new boolean[answer];
        start=firstPerson(answer);
        occupyOneMore(answer, start, firstPerson);
    }

    public static int promptForNumberOfStalls (){
        int answer =0;
        Scanner keyboard = new Scanner (System.in);
        System.out.println("Hello, how many stalls will there be");
        answer = keyboard.nextInt();
        return answer;
    }
    public static String firstPerson( int answer){
        boolean[] firstPerson = new boolean[answer];
        String start="";
        for(int i=0;i<firstPerson.length;i++){
            if(firstPerson[i])
                start+="X";
            else
                start+="_";
        }
        return start;
    }

    public static boolean[] occupyOneMore(int answer, String start, boolean[] firstPerson){
    int middle=answer/2+1;
    firstPerson[answer/2+1]=true;
    for (int i = 0; i < firstPerson.length; i++) {
        if (firstPerson[i] == true) {
            middle = (int) Math.floor(i / 2); // use Math.ceil to round up
            System.out.println(middle);

            if(middle==i){
                  firstPerson[i]=true;
              }
        }

    }



    System.out.println(Arrays.toString(firstPerson));
    return firstPerson;
}

}

4

3 回答 3

0
int answer = 0;
boolean firstPerson[] = new boolean[answer];

第一个问题是您的数组以 0 的长度开始。数组是固定的,因此您必须定义大小。

PS:我们为你做功课无济于事。

编辑:关于您的评论

你必须找到左边的中间。因此,遍历数组并找到大小,直到达到真实值。

int middleLeft;
for (int i = 0; i < firstPerson.length; i++) {
    if (firtPerson[i] == true) {
        middleLeft = (int) Math.floor(i / 2); // use Math.ceil to round up
    }
}

一旦你有了变量,就在数组中的那个位置middleLeft放一个值。true

于 2013-04-09T03:11:43.817 回答
0

要打印数组的内容,请使用Arrays.toString()

boolean[] ba = new boolean[]{true,true,false,true};
System.out.println(Arrays.toString(ba));

将产生输出

[true,true,false,true]
于 2013-04-09T03:18:23.290 回答
0

我相信你可以使用这样的东西在你的循环中打印值:

System.out.println(firstPerson[s] ? "true" : "false");

或用于System.out.print(...);将值保持在同一行。

于 2013-04-09T03:28:16.873 回答