2016-09-16 56 views
-1

我对这行代码有困难。代码是计算一个互联网服务账单,其中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) 
+1

欢迎来到StackOverflow。这实际上是一个重复的问题,这里有一个答案:http://stackoverflow.com/q/13042008/1646783。 – jlars62

回答

-1

你关闭你的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; 
} 
相关问题