如何使Scanner用户输入与if语句相对应

时间:2018-09-11 14:41:22

标签: java java.util.scanner string-comparison

这就是我现在所拥有的。我试图让用户输入的答案与我的if语句相对应。现在,它不会给我任何输入所需的信息,然后程序停止运行,不会给我任何输出或错误。我觉得我已经接近了,有人可以帮忙吗?

编辑:所以你们中的许多人都试图通过while循环来帮助我,这不是我要解决的部分。我试图找出我在if(contract.equals(“ A”))中缺少的内容,以及为什么它不会为此提供任何输出,所以我可以找出while循环,但是我无法如果输入A,它将不会运行A选择。我想念什么?

 import java.util.Scanner;
    public class BillCalculator{

      public static void main(String[]args)
       {
          double totalBill;
          double rate;
          double baseCharge;
          double hours;
          double allowedHours;
          double extra=0;
          String contract;

      Scanner keyboard = new Scanner(System.in);

      System.out.println("What package did you purchase?");
      contract= keyboard.nextLine();

      System.out.println("How many hours did you use?");
      hours=keyboard.nextDouble();


      if (contract.equals("A"))
       {
        baseCharge=9.95;
        rate=2.00;
        allowedHours=10;
        while (hours>allowedHours)
          {
           extra=extra+1;
          }
        totalBill=baseCharge+(rate*extra);
        System.out.println("Your total bill is "+ totalBill);
       }
    else if (contract.equals("B"))
      {
        baseCharge =13.95;
        rate=1.00; 
        totalBill=baseCharge+(rate*(hours-20));
        System.out.println("Your total bill is "+ totalBill);
      }
   else if (contract.equals("C"))
      {
      System.out.println("Total monthly bill is $19.95.");
      }
   else 
    System.out.println("Wrong input."); 

  }

}

1 个答案:

答案 0 :(得分:1)

while循环

 if (contract.equals("A"))
   {
    baseCharge=9.95;
    rate=2.00;
    allowedHours=10;
    while (hours>allowedHours)
      {
       extra=extra+1;
      }
    totalBill=baseCharge+(rate*extra);
    System.out.println("Your total bill is "+ totalBill);
   }

小时数属性输入> 10时是无限的

如果您要修复此问题,建议您更新while条件,或在while循环内使用if语句(然后中断)检查内容

我还建议您这样显示输入错误

System.err.println("Wrong input.");