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