2014-01-15 2 views
4

Мне нужна помощь с одним упражнением в java, я застрял на этой ошибке, возможно, на 2 часа. Любая помощь будет большой.Исключение из потока «main» java.util.InputMismatchException

Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Scanner.java:909) 
    at java.util.Scanner.next(Scanner.java:1530) 
    at java.util.Scanner.nextInt(Scanner.java:2160) 
    at java.util.Scanner.nextInt(Scanner.java:2119) 
    at prodavnica.Prodavnica.main(Prodavnica.java:60) 
Java Result: 1 


package prodavnica; 

public class Proizvod { 

    private String ime_proizvod; 
    private static int cena; 

    public Proizvod(String ime_proizvod, int cena) { 
     this.ime_proizvod = ime_proizvod; 
     this.cena=cena; 
    } 

    public String getIme_proizvod() { 
     return ime_proizvod; 
    } 

    public void setIme_proizvod(String ime_proizvod) { 
     this.ime_proizvod = ime_proizvod; 
    } 

    public static int getCena() { 
     return cena; 
    } 

    public static void setCena(int cena) { 
     Proizvod.cena = cena; 
    } 

    public void pecatiPodatoci(){ 
     System.out.println("Ime: "+ime_proizvod+" Cena: "+cena); 
    } 

} 

И:

package prodavnica; 

import java.util.Scanner; 

public class Prodavnica { 

    private String ime_prodavnica; 
    private Proizvod proizvodi[]=new Proizvod[20]; 

    public Prodavnica(String ime_prodavnica) { 
     this.ime_prodavnica = ime_prodavnica; 
    } 

    int br=0; 

    public void dodadiProizvod(Proizvod p){ 
     proizvodi[br]=p; 
     br++; 
    } 

     public Proizvod najskapProizvod(){ 

     Proizvod max=proizvodi[0]; 

     for(int r=0;r<proizvodi.length;r++){ 

      if(max.getCena()<proizvodi[r+1].getCena()){ 
       max=proizvodi[r+1]; 
      } 
     } 
     return max; 

    } 


    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 


     Prodavnica pro1=new Prodavnica("Tinex"); 

     int n; 

     System.out.println("Vnesete kolku proizvodi ke stavite: "); 
     n=input.nextInt(); 



     String imer = input.nextLine(); 
     int cenar = input.nextInt(); 


     pro1.dodadiProizvod(new Proizvod(imer, cenar)); 


     System.out.println("Ime-pr: "+pro1.proizvodi[0].getIme_proizvod()+" Cena= "+pro1.proizvodi[0].getCena()); 
    } 

} 

Я не могу войти в строку "ИМЕР" или ИНТ "cenar" на переменную "proizvodi" из класса Proizvod.

Любая помощь? почему я получаю эту ошибку? Благодаря!

+0

После получить эту работу, прочитать: [Пропуск nextLine() после использования nextInt()] (http://stackoverflow.com/questions/13102045/skipping-nextline-after-use-nextint) –

ответ

2

Это исключение, выведенное сканером, чтобы указать, что извлеченный токен не соответствует шаблону для ожидаемого типа или что токен находится за пределами допустимого диапазона.

String imer = input.next();// Use for String Input 
input.nextLine();//Use for next line of input 
int cenar = input.nextInt(); 
+0

Благодаря! Это действительно помогает! Я не знал, что вы можете использовать только «input.next()». Большое спасибо! – tonyhlav

1

Вы должны положить Int в прежде чем попасть в ИМЕР или cenar:

n=input.nextInt(); 

Эта линия не кажется, делать что-либо, либо удалить его, или поставить номер в прежде чем положить imer или cenar in.

Смежные вопросы