我需要有关布尔数组的帮助

时间:2013-04-09 03:07:12

标签: java arrays

我遇到阵列问题,可以使用一些帮助。

  

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

        _ _ _ _ _ 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;
}

}

3 个答案:

答案 0 :(得分: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值放在数组中的该位置。

答案 1 :(得分:0)

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

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

将产生输出

[true,true,false,true]

答案 2 :(得分:0)

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

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

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