【问题标题】:Mailbox Program Java (flipping booleans)邮箱程序 Java(翻转布尔值)
【发布时间】:2018-04-24 21:15:29
【问题描述】:

我的任务是创建一个用户输入数字的程序,这将是邮箱的总数。所有邮箱都将从关闭位置开始(布尔值 true)。然后你将每隔一个邮箱翻转一次,然后是第三个,第四个,然后是第五个,依此类推,直到你到达最后一个邮箱,这是唯一一个被翻转的邮箱。然后您必须报告哪些邮箱仍然关闭。我还没有把封闭的盒子还给用户。因为我被困在如何让它通过阵列过滤。

    scanner  input = new Scanner(System.in);
    System.out.println("This program will close and open mailboxes in a fixed pattern.  How many mailboxes would you like to see?");
    int numOfBoxes = input.nextInt();
    boolean [] boxes = new boolean [numOfBoxes];
    for(int i = 0; i <= numOfBoxes; i++){
      for(int j = 2; j <= numOfBoxes; j++){
        if(boxes.indexOf[i] % j == 0){
           boxes[i] = !boxes[i];
        }
      }
    }

【问题讨论】:

  • 请举例输入输出或澄清任务。
  • 你有什么问题?

标签: java for-loop boolean


【解决方案1】:

怎么样

for(int i=2; i<=numOfBoxes; ++i) {
    for(int j=i-1; j<numOfBoxes; j+=i) {
        boxes[j] = !boxes[j]
    }
}

这样做是你想要的吗?


编辑

这是一个完整的工作示例:

public static void main(String[] args) {
    int numOfBoxes = 5;
    boolean [] boxes = new boolean [numOfBoxes];
    for(int i = 2; i <= numOfBoxes; ++i){
      for(int j = i-1; j < numOfBoxes; j+=i){
        boxes[j] = !boxes[j];
      }
    }
    System.out.println(Arrays.toString(boxes));
}

运行给我以下输出:

[false, true, true, false, true]

【讨论】:

  • 很遗憾,这是不正确的。当给出 5 时,它应该返回:1、4。您给出的代码给出:1,2,4
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 2016-04-23
  • 2010-10-11
相关资源
最近更新 更多