java util没有这样的元素异常问题
问题描述:
我对这行代码有困难。代码是计算一个互联网服务账单,其中A包的费用为10个小时9.95美元,额外的小时为2美元。 B套餐每月花费13.95美元20小时,额外费用为1美元。 C套餐每月需要19.95美元。在我放入小时后,我不断收到此错误java.util.NoSuchElementException。java util没有这样的元素异常问题
下面是代码:
import java.util.Scanner;
public class InternetServiceProvider {
public static void main (String args[])
{
while (true)
{
printMonthlyBill(calculateBill(getHours(), menu()));
}
}
public static double getHours()
{
double hours;
Scanner inputHours = new Scanner (System.in);
System.out.print("Please enter the hours used: ");
hours = inputHours.nextDouble();
inputHours.close();
return hours;
}
public static int menu()
{
int packageChoice;
Scanner userInput = new Scanner (System.in);
System.out.println("Which package have you obtain? (Please use A, B, or C)");
System.out.println("[1] Package A");
System.out.println("[2] Package B");
System.out.println("[3] Package C");
System.out.print("Please select your package: ");
packageChoice = userInput.nextInt();
userInput.close();
return packageChoice;
}
}
这是输入:
Please enter the hours used: 25
Which package have you obtain? (Please use A, B, or C)
[1] Package A
[2] Package B
[3] Package C
Please select your package: Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at InternetServiceProvider.menu(InternetServiceProvider.java:37)
at InternetServiceProvider.main(InternetServiceProvider.java:8)
答
你关闭你的System.in
。您应该在两种方法之间共享Scanner
,并在完成后关闭。
public static void main (String args[])
{
try(Scanner input = new Scanner (System.in)) {
while (true)
{
printMonthlyBill(calculateBill(getHours(input), menu(input)));
}
}
}
public static double getHours(Scanner input)
{
double hours;
System.out.print("Please enter the hours used: ");
hours = input.nextDouble();
return hours;
}
public static int menu (Scanner input)
{
int packageChoice;
System.out.println("Which package have you obtain? (Please use A, B, or C)");
System.out.println("[1] Package A");
System.out.println("[2] Package B");
System.out.println("[3] Package C");
System.out.print("Please select your package: ");
packageChoice = input.nextInt();
return packageChoice;
}
欢迎来到StackOverflow。这实际上是一个重复的问题,这里有一个答案:http://stackoverflow.com/q/13042008/1646783。 – jlars62