Java 如何使扫描仪用户输入与if语句相对应

Java 如何使扫描仪用户输入与if语句相对应,java,java.util.scanner,string-comparison,Java,Java.util.scanner,String Comparison,这就是我现在拥有的。我试图让用户输入的答案与我的if语句一致。现在它不会给我任何它要求我输入的东西,然后程序只是停止,它不会给我任何输出或错误。我觉得我很接近,有人能帮忙吗 EDIT:所以你们中的很多人都在尝试帮助我处理while循环,这不是我试图修复的部分。我试图找出if(contract.equals(“A”)中缺少了什么,以及为什么它不会给我任何输出,基于此,我可以找出while循环,我只是无法得到它,如果您输入A,它将不会运行A选择。我错过了什么? import java.util.S

这就是我现在拥有的。我试图让用户输入的答案与我的if语句一致。现在它不会给我任何它要求我输入的东西,然后程序只是停止,它不会给我任何输出或错误。我觉得我很接近,有人能帮忙吗

EDIT:所以你们中的很多人都在尝试帮助我处理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."); 

  }

}
里面的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."); 

很可能while循环从未停止过
while(hours>allowedHours)
->您应该在循环中修改
hours
,否则该条件将始终为真,并且最终将有一个无限循环。请参见
while
循环:这是一个无限循环,因为您没有退出条件(即,
extra
是递增的,但条件使用的是
hours
)您应该学会区分停止的程序和挂起的程序。第一个程序会将您带回命令行(或者IDE显示它已完成)第二个程序继续运行而不产生任何输出。正如其他人所指出的,您的程序不会停止;它会挂起。或者在循环中更新
hours
allowedHours
。但是我想
hours-extra>allowedHours
应该足以获得额外的时间。小心
系统。如果您e在处理中同时使用
System.out
System.err
。输出不一定同步,因此可以在控制台中以不同的顺序打印输出消息。