java.util.Scanner.throwFor(Unknown Source). Why doesn't my code work?

瘦欲@ 提交于 2019-12-12 01:57:42

问题


Ok so I have written two blueprint classes and one tester.I keep getting this same error:

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

Can anyone enlighten me on what I am doing wrong? Here is my code.

blueprint class 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();




}
}

Tester class:

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:


Problem:

Your problem is that you're closing your Scanner in the scan() method. Somewhat non-intuitively, closing the Scanner also closes the System.in input stream, thus causing you to be unable to create a new Scanner in the billCal() method.

Solution:

You can either A) remove in.close() at the end of your scan() method or B) create a single Scanner in the main method, and pass it to each of your methods.



来源:https://stackoverflow.com/questions/26722065/java-util-scanner-throwforunknown-source-why-doesnt-my-code-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!