Java switch语句工作不正常
我有两个类用于计算ISP计划的成本和收集输入/显示成本。伊斯曼。java和ISP。java ISPMain应该显示服务计划,并要求用户根据包的字母选择他们的计划,如包a、包b或包c。我已经设置了它,所以用户输入字符来选择计划。如果计划不是包c(无限计划),则系统会提示用户输入他们使用的小时数
一旦输入小时数并以小时为单位存储,ISP就会使用。java计算成本,然后计算ISPMain。java显示它。我的问题是,我在ISP中的switch语句只显示默认值,我不知道为什么。有人能解释一下吗
public class ISPMain
{
public static void main(String[] args)
{
char pkg;
double hoursUsed;
Scanner kb = new Scanner(System.in);
System.out.println("The three packages offered are: ");
System.out.println("Package A: For $9.95 per month, 10 hours of access are provided. \nAdditional hours are $2.00 per hour.");
System.out.println("Package B: For $14.95 per month, 20 hours of access are provided. \nAdditional hours are $1.00 per hour.");
System.out.println("Package C: For $19.95 per month, unlimited access is provided.");
System.out.println("Please type the letter of the package you have: ");
pkg = kb.nextLine().toUpperCase().charAt(0);
if(pkg == 'A')
{
System.out.print("Enter number of hours: ");
hoursUsed = kb.nextDouble();
}
else if(pkg == 'B')
{
System.out.print("Enter number of hours: ");
hoursUsed = kb.nextDouble();
}
else if(pkg == 'C')
{
System.out.print("You have unlimited access! No need to enter hours used. \n");
}
ISP user = new ISP();
System.out.print("Total charges: " + user.calculateCharges());
}
}
来自ISP的switch语句。爪哇:
public double calculateCharges()
{
switch (pkg)
{
case 'A':
if (hoursUsed < 10)
{
return 9.95;
}
else
{
return (hoursUsed - 10)*2 + 9.95;
}
case 'B':
if (hoursUsed < 20)
{
return 14.95;
}
else
{
return (hoursUsed - 20) + 14.95;
}
case 'C':
return 19.95;
default:
System.out.println("Invalid input!");
return 0;
}
}
总之,我的if-else工作正常,但开关仅显示“无效输入”
# 1 楼答案
正如其他人所说,您需要将pkg变量放入switch语句的范围。试试这个:
然后调用您的方法,如:
# 2 楼答案
默认:case语句将始终在代码中运行,因为char-pkg未定义为方法的参数
用户可以输入A、B或C,但由于未通过,最终结果将始终为默认值,因此导致输入无效
尝试: