Scanner wyrzuca blad przy wczytywaniu zmiennej

0

witam,
problematyczny kod to:

import java.io.IOException;
import java.util.Scanner;
import java.util.InputMismatchException;


public class program {

	static public Scanner scanner;
	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {

	    int q=1,y,i,g; 
	    double m=1,s=0;
	    scanner = new Scanner(System.in);
	Automat p = new Automat(15,15,20,25,25,25);
	   Napoj[] napoje= new Napoj[3]; 
	   napoje[0] = new Napoj(1.7,0,"Coca-Cola");
	   napoje[1] = new Napoj(2,0,"Sprite");
	   napoje[2] = new Napoj(2.1,20,"Fanta"); 
	                    

	while (q!=0)
	{
		System.out.println("Co chcesz zrobic?");
		System.out.println("Kupic napoj: nacisnij 1");
		System.out.println("Wydrukowac raport o monetach: nacisnij 2");
		System.out.println("Wydrukowac raport o kupionych napojach: nacisnij 3");
		System.out.println("Wyjsc: nacisnij 0");
//		q=System.in.read();
		q = scanner.nextInt();
		System.out.println(q);
	switch (q)
	{
	case 1: {
	         
			 for (int j = 0; j <3; j++) {
	             napoje[j].nazwaa();
	             System.out.println(": "+napoje[j].cenaa()+" nacisnij "+j);
	                                    }
			 g = scanner.nextInt();
			 System.out.println(g);
			 
			 if (napoje[g].czyjest()) {
			  y=1;
	          s=0;
			  while (y!=0){
				  System.out.println("Monety wrzucne: "+s+"\n Co chcesz zrobic: \n\t\t Wrzuc monete: 0 \n\t\t Kup napoj: 1 \n\t\t Anuluj: 2");
				  System.out.println("Twoj wybor: ");
		//		y=System.in.read();
				  y = scanner.nextInt();
				if (y==0) {
					System.out.println("Wrzuc monete. ");
	         m = (double)scanner.nextDouble(); //TU WLASNIE JEST PROBLEM, PROBOWALEM JUZ UZYC SCANNERA NA KILKA ROZNYCH SPOSOBOW I NIC!
	           
	                s=s+m;
	                p.dodaj(m);
	                      }
				if ((y==1)&&(napoje[g].wydajreszte(s)<0))  {System.out.println("Brak srodkow. Wrzuc monete.");}
					else {
						System.out.println("reszta: ");
	                p.monety(napoje,s,g);
	                }
	                if (y==2) { break; }
				}
			  }
			  else System.out.println("Brak zadanego napoju.");
			  }
	case 2: 
		p.wypisz();
	case 3: {

		System.out.println("Kupiles: ");
	     for (i=0; i <3 ; i++)  {
			napoje[i].nazwaa();
			System.out.println(": "+napoje[i].kupno());
	break;
	}
	}
	}

	}

}
}

a dokladnie to miejce:
m = (double)scanner.nextDouble();
pomimo wielu prob wyrzuca wciaz blad:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at program.main(program.java:57)

0

InputMismatchException

Thrown by a Scanner to indicate that the token retrieved does not match the pattern for the expected type, or that the token is out of range for the expected type.

W skrócie, pewnie wpisujesz nieprawidłowo liczbe double.

Zapewne używasz '.' (np.: 2.5) zamiast ','. (2,5)
Jeżeli chcesz używać '.' zrób:

scanner.useLocale(Locale.ENGLISH);

1 użytkowników online, w tym zalogowanych: 0, gości: 1