java.util.Scanner.throwFor(未知来源)。为什么我的代码不起作用?

时间:2014-11-03 19:56:15

标签: java testing java.util.scanner

好的,所以我写了两个蓝图类和一个测试人员。我一直得到同样的错误:

'java.util.Scanner.throwFor(Unknown Source)'. 

任何人都可以告诉我我做错了什么吗?这是我的代码。

蓝图类ShoppingCart:

    package exercise3;

import java.util.Scanner;
import javax.swing.JOptionPane;
public class ShoppingCart 
{
    ScanShop amount = new ScanShop();





    public void getbill()
    {

        JOptionPane.showMessageDialog(null,"your total is: " +  amount.getcart());
    }

    public void billCal()
    {
        String answer;
        int number;
        Scanner input = new Scanner(System.in);

        /*System.out.println("please enter how much your bill is:...");
        //how much bill is:
        cart = in.nextDouble();
        in.nextLine();
        System.out.printf("you have entered: %.2f", cart);*/

        System.out.println("Do you have a loyalty card? y or n");
        // asking do you have loyalty card
        answer= input.next();


        if (answer.equalsIgnoreCase("y"))
        {

            amount.setcart(amount.getcart()*0.9);

            //other vouchers to discount
            System.out.println("thats great! do you have a voucher: "
                    + "\n(1) £5  "
                    + "\n(2) £10 "
                    + "\n (3) no vouchers");
            number= input.nextInt();
            switch(number)
            {
            case 1 :
                amount.setcart(amount.getcart()-5);
                getbill(); 
                break;

            case 2 : 
                amount.setcart(amount.getcart()-10);
                getbill();
                break;

            default : 
                getbill();
                break;
            }
        }


        else
        {
            getbill();
        }


        input.close();
    }//closing billCal

}

Blueprint ScanShop:

 package exercise3;
import java.util.Scanner;
public class ScanShop 
{
private double cart;

public double getcart()
{
    return cart;
}
public void setcart(double cart)
{
    this.cart =cart;
}
public void scan()
{

    //the prices of items
    double p1;
    double p2;
    double p3;
    double total;

    Scanner in = new Scanner(System.in);

    System.out.println("what price is item one?");
    p1 = in.nextDouble();
    System.out.println("What is price of item two?");
    p2= in.nextDouble();
    System.out.println("And what is the price of the third item?");
    p3= in.nextDouble();
    in.nextLine();

      total = p1 + p2 + p3;


    System.out.printf("The total bill is %.2f\n\n", total);


    setcart(total);

    System.out.println("the cart is: " + getcart());

    in.close();




}
}

测试员类:

package exercise3;

public class ShoppingCart_Test {
public static void main (String [] arg){
    ShoppingCart customerOne = new ShoppingCart();
    //c1 is customer one
    ScanShop  c1 = new ScanShop();


    c1.scan();
    customerOne.billCal();


}
}

1 个答案:

答案 0 :(得分:0)

<强>问题:

您的问题是,您正在使用Scanner方法关闭scan()。有些不直观,关闭扫描程序也会关闭System.in输入流,从而导致您无法在Scanner方法中创建新的billCal()

<强>解决方案:

您可以<{1}}方法结束时 A)删除in.close() B 创建一个scan()在main方法中,并将其传递给您的每个方法。