Я вложил цикл for внутрь while, чтобы отслеживать время. А цикл while отслеживает отскоки, если выполняется определенное условие. Пока выполняется это условие, цикл for будет продолжать подсчет. Но как только условие выполнено, цикл должен остановиться. Однако он продолжается независимо от условий внутри цикла while.
/*
* @Author Lawton C Mizel
* @Version 1.0, 07 October 2014
*
* A program that simulates a ball bouncing by computing
* its height in feet and each "second" as time passes on
* a simulated clock.
*
*/
public class bouncyballs001 {
public static void main(String[] args) {
// create and connect scanner object
Scanner keyboard = new Scanner(System.in);
//introduce program
System.out.println("Welcome to the bouncing ball program!");
//prompts the user
System.out.println("Please enter the initial velocity: ");
double vel = keyboard.nextInt();
//initial variables
double height = 0;
int bounce = 0;
while (bounce < 5) {
for (int time = 0; time <= 30; time++) //counter
{
if (time >= 0) {
height = height + vel;
vel = vel - 32.0;
}
if (height < 0) {
height = height * -0.5;
vel = vel * -0.5;
System.out.println("BOUNCE!");
bounce++;
}
System.out.println("time: " + time + " " + "height: " + height);
}
}
}
}
2 ответа
Вы не достигнете внешнего цикла while, пока время не увеличится в 30 раз. Вы можете добавить требование отскока к циклу for и удалить цикл while. Что происходит, вы можете отскочить 30 раз в цикле for до того, как отскок будет проверен во внешнем цикле while.
for(int time=0; time <= 30 && bounce < 5; time++) //counter, bails out if bounce > 5
{
if(time >= 0)
{
height = height + vel;
vel = vel - 32.0;
}
if(height < 0)
{
height = height * -0.5;
vel = vel * -0.5;
System.out.println("BOUNCE!");
bounce++;
}
System.out.println("time: "+time+" "+"height: "+height);
}
В качестве альтернативы вы можете использовать оператор if и break
.
У вас есть bounce ++ в условном выражении, которое никогда не будет вызвано.
if (height < 0)
Никогда не будет истинным, потому что высота начинается с 0 и идет вверх (т.е. никогда не может быть отрицательной).
Это означает, что отскок никогда не будет отличным от нуля.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.