gpt4 book ai didi

Java程序在进入循环时出现一次卡住

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:48 26 4
gpt4 key购买 nike

这是我向该网站提出的第一个问题,因此我深表歉意,如果我发布的内容不正确,我将不胜感激!这是一道家庭作业题,虽然我似乎无法那样标记它。

无论如何,代码似乎可以正常编译(使用 BlueJ),但在我运行它时进入第一个 while 循环时卡住了。我添加了一些输出行以查看问题发生的位置以及第一个 System.out 当它进入第一个 while 循环时永远不会发生...... JVM 继续工作直到我强制它重置。我相信我最初的 while 循环应该运行 4 次然后以我使用的值退出(5 名学生,我从 2 开始),但它似乎根本没有做任何事情而且我对我的内容感到茫然做错了。

程序完成后打算做什么的摘要。

一群学生走过一排储物柜。

  • 学生 1 打开所有储物柜
  • 学生 2 每隔一秒关闭一次储物柜
  • 学生 3 反转每 3 个储物柜的状态,以此类推学生人数

我知道我还没有将 boolean 储物柜标志设置为正确翻转,并打算在第二个 while 循环中使用 !myBool 的变体来这样做 - 但首先我想确保我的 while 循环完全正常工作。希望我因为盯着它看太久而错过了一些简单的东西!

import java.util.Arrays;

public class Lockers
{
public static void main (String[]args)
{
// Size of lockerArray
int arraySize = 5;
// Set up new lockerArray
boolean[] lockerArray = new boolean[arraySize];

// Variable for number of students in the exercise
int studentNumber = 5;

System.out.println("Student 1 opens all the lockers.\n");// Outputs, good
// Student 1 opens all the lockers
// Boolean values for lockerArray true = OPEN; false = CLOSED
Arrays.fill(lockerArray, true);
System.out.println(Arrays.toString(lockerArray)); // Outputs 5 true, good

// Set the student counter at 2 (Student 1 has already made their pass)
int i = 2;
// Loop until you run out of students
while (i <= studentNumber);
{
System.out.println("Student Number " + i + " is making their pass.\n");// NEVER HAPPENS - have to reset JVM to stop program
// Set up a variable to control the sequence required (i.e., Student 2 every second locker,
// Student 3 every third locker, etc.
int j = i;
while (j <= arraySize);
{
System.out.println("Student is changing the status of locker number " + j + ".\n");
// Reverse the flag at each locker for which the statement is true for this student number
// Need to reduce the variable by 1 as locker 1 would be sitting in lockerArray[0] position
lockerArray[j-1] = false;
// Increment locker number by the value of the student in the sequence
j = j + i;
}
// Increment the student count
i++;
}
// Print the final array status
System.out.println(Arrays.toString(lockerArray));
}

}

最佳答案

您的 while 循环后面有分号。

while (i <= studentNumber);

这会导致无限循环,因为您的 i 变量不能改变。

关于Java程序在进入循环时出现一次卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21355502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com