嘿我这个代码一直有问题,因为当我输入String重复的值时它还没有循环。我无法理解我做错了什么。
import java.util.Scanner;
public class MpgCalculator
{
public static void main(String[]args)
{
Scanner sc = new Scanner(System.in);
System.out.println("Welcome to the MPG and CPM Calculator!");
double startOd, endOd, gallons, cost, mpg, cpm;
String repeat = "yes";
while(repeat.equals("yes")||repeat.equals("Yes")||repeat.equals("y")||repeat.equals("Y"))
{
System.out.println("Please Enter:");
System.out.print("\tYour Starting Odometer Reading: ");
startOd = sc.nextDouble();
System.out.print("\tYour Ending Odometer Reading: ");
endOd = sc.nextDouble();
System.out.print("\tThe Amount of Gallons Used: ");
gallons = sc.nextDouble();
System.out.print("\tThe Cost-per-Gallon That You Spent: ");
cost = sc.nextDouble();
mpg = getMpg(startOd, endOd, gallons);
cpm = getCpm(mpg, cost);
System.out.println("\nYour Miles-per-Gallon is " + mpg + ".");
System.out.println("Your Cost-per-Mile is " + cpm + ".");
System.out.print("Do it again? ");
repeat = sc.nextLine();
}
}
public static double getMpg(double startOd, double endOd, double gallons)
{
double mpg;
mpg = (endOd - startOd) / gallons;
return mpg;
}
public static double getCpm(double mpg, double cost)
{
double cpm;
cpm = cost / mpg;
return cpm;
}
}
答案 0 :(得分:1)
将repeat = sc.nextLine();
更改为repeat = sc.next();
如果您不需要额外的行。只有当你是下一行时才会得到它,你不是这样,所以它终止了程序。
答案 1 :(得分:0)
在Scanner
循环中调用repeat = sc.nextLine();
之前,while
之前的使用是nextDouble
。调用nextDouble
不会消耗流中的换行符来输入每加仑的成本。
在要求重复之前使用换行符:
System.out.print("Do it again? ");
String dummy = sc.nextLine(); // Add this line.
repeat = sc.nextLine();
答案 2 :(得分:0)
使用 repeat = sc.next(); 代替 repeat = sc.nextLine();