我正在编写一个小脚本,用户需要输入里程和加仑输入,并显示总行程数和每加仑行程数。这就是我所拥有的。
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时会考虑值。)
有关我应该使用什么的提示?
答案 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
我在您的代码之上添加的内容: