在eclipse中使用预定输入结束while循环

时间:2017-04-01 22:38:54

标签: java eclipse loops

我正在编写一个小脚本,用户需要输入里程和加仑输入,并显示总行程数和每加仑行程数。这就是我所拥有的。

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

        double totalMiles = 0;
        double totalGallons = 0;
        int tripCounter = 0;

        while (tripCounter > -1)
        {
            System.out.print("Enter miles driven: "); //Want to say "Enter miles driven or 'q' to quit: "
            double milesDriven = input.nextDouble();
            totalMiles = totalMiles + milesDriven;

            System.out.print("Enter gallons of gas consumed: "); // Similar to the above.
            double gasConsumed = input.nextDouble();
            totalGallons = totalGallons + gasConsumed;

            tripCounter = tripCounter + 1;

            double milesPerGallon = totalMiles / totalGallons;

        System.out.printf("%nYour number of trips is: %s%n", tripCounter);
        System.out.printf("Your mileage per gallon of gas consumed is: %s%n%n", milesPerGallon);
        }


    }

}

就像现在一样,循环将无限期地继续。我想要做的是能够接受预定义的输入(例如退出'或' q')来结束循环并报告上一次旅行和milePerGallon而不制作新的等式或再添一次旅行。 (我还想过尝试继续循环,直到输入' 0'的值。我怀疑我会使用milesDriven和gasConsumed循环。但每当我尝试它时,它仍然需要那些运行新的milePerGallon时会考虑值。)

有关我应该使用什么的提示?

2 个答案:

答案 0 :(得分:0)

它仍然在代码中计算0的原因是因为计算在输入之后进行。要解决此问题,您可以像这样更改代码。所以if语句确保在计算运行之前该值大于0。

    while (milesDriven>0)
            {
                System.out.print("Enter miles driven: "); //Want to say "Enter miles driven or 'q' to quit: "
                double milesDriven = input.nextDouble();
                if (milesDrive>0)
                {
                totalMiles = totalMiles + milesDriven;

                System.out.print("Enter gallons of gas consumed: "); // Similar to the above.
                double gasConsumed = input.nextDouble();
                totalGallons = totalGallons + gasConsumed;

                tripCounter = tripCounter + 1;

                double milesPerGallon = totalMiles / totalGallons;
                }
            System.out.printf("%nYour number of trips is: %s%n", tripCounter);
            System.out.printf("Your mileage per gallon of gas consumed is: %s%n%n", milesPerGallon);
            }

答案 1 :(得分:0)

  

我想要做的是能够接受预定义的输入(例如'退出'   或者' q')结束循环并报告上一次旅行和milePerGallon   没有制作新的等式或增加另一次旅行。

首先,我想说明即使我能理解你为什么ResponsiveSlides.js作为 <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/ResponsiveSlides.js/1.55/responsiveslides.min.js"></script> </head> <body> <div> <ul id="exampleSlider"> </ul> </div> <script type="text/javascript"> $.getJSON('slides.json', function(data) { $("h2").html(data[0].title); $.each(data, function (i, f) { if(i>0){ $("#exampleSlider").append("<li><a><img src=" + f.content + "></img></a><p>"+f.title+"</p></li>"); $("a").attr("href", "#"); } }); }); $(function () { $("#exampleSlider").responsiveSlides({ auto: true, pause: true, speed: 1200, timeout: 3000 }); }); </script> </body> </html> 条件,但它并没有多大意义。总是递增tripCounter > -1因此条件永远不会变为while loop。考虑到这一点,我们可以在用户决定退出时将其简化为tripCounter,然后基本上false

<强>解决方案:

考虑到你提到的内容,我们可以使用while(true)在每次迭代后存储记录,基本上当用户决定退出时,我们可以简单地break最后一条记录并显示它

Stack

我在您的代码之上添加的内容: