如何在结果中没有if条件的情况下打破循环

时间:2018-03-29 11:33:03

标签: java while-loop

import java.util.Scanner;

public class Tykinkuula {

public static void main(String[] args) {
    Scanner lukija = new Scanner(System.in);

    double highest = 0;

    int seconds = 0;
    double height = 0;

    System.out.println("Syötä tykinkuulan lähtönopeus: ");
    double startspeed = Double.parseDouble(lukija.nextLine());
    System.out.println("Syötä painovoima: ");
    double gravity = Double.parseDouble(lukija.nextLine());

    System.out.println(seconds + "\t" + height + "\t" + startspeed);

    while (true) {
        if (height < 0.0) {
            break;
        }

        height = height + startspeed;
        seconds = seconds + 1;
        startspeed = startspeed - gravity; 

        if (height > highest) {
            highest = height;
        }

        System.out.println(seconds + "\t" + height + "\t" + startspeed);            
    }

    System.out.println("");
    System.out.println("Tykinkuulan suurin korkeus oli " + highest);

}

这是一个计算器代码,每秒钟给我一个canonball的速度和高度。输入所需的起始速度和重力,然后运行代码。

当我运行此代码时,它为我提供了3列,秒,高度和速度。

循环应该在炮弹击中地面之前结束,所以基本上在 height = 0 之前。但是当我运行代码时它给了我一个负高度,但我需要程序只显示球何时在空中的结果。

那么,如何删除否定结果?

1 个答案:

答案 0 :(得分:1)

简单地移动

if (height < 0.0) {
    break;
}

计算后。由于您只检查一次它低于0,您需要在计算下一步后进行检查。目前您在循环开始时检查,height仍然具有上一次迭代(0)的值,而下一次计算输出负数