Forum zamknięte. Zapraszamy do grupy na Facebooku
Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Scanner i błąd (Unknown Source)
03-18-2014, 01:25 PM (Ten post był ostatnio modyfikowany: 03-18-2014 04:33 PM przez Jaek.)
Post: #1
Scanner i błąd (Unknown Source)
Piszę program i chcę go zrobić tak, żeby w main nie było żadnych luźnych zmiennych ani funkcji, ma być tam tylko tworzenie i używanie obiektów. Program ma być prymitywny, ale czysto obiektowy, nawet jeśli większość klas będzie miała tylko po jednym obiekcie.

Zrobiłem więc klasę User do przechowywania wyborów użytkownika, wyświetlania zapytań o nie i sczytywania wyborów z klawiatury. W skrócie wygląda to tak (skróciłem kod do minimum na potrzeby pytania):

Kod:
import java.io.IOException;
import java.util.Scanner;

public class User {
    private int ileNazwChce;
    private int jakaMetodeChce;
    private Scanner scanner;
    
    public User(){
        this.scanner = new Scanner(System.in);
    }
    
    public void setJakaMetodeChce() throws IOException {
        System.out.println("Jaka metoda podzialu? Oto mozliwosci:");
        System.out.println("1");
        System.out.println("2");
        this.jakaMetodeChce = scanner.nextInt();
    }

    public void setIleNazwChce() throws IOException {
        System.out.println("Ile nazw zrobic?");
        this.ileNazwChce = scanner.nextInt();
    }
}

W klasie głównej mam tylko:
Kod:
import java.io.IOException;

public class test {

    public static void main(String[] args) throws IOException
    {
        User user = new User();
        user.setJakaMetodeChce();
        user.setIleNazwChce();
    }
}

Efekt jest taki, że mogę podać dane z klawiatury dla pierwszej metody (user.setJakaMetodeChce()) ale przy drugiej po wpisaniu liczby i naciśnięciu entera pojawia się:
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.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at universalGenerator.User.setIleNazwChce(User.java:57)
at universalGenerator.test.main(test.java:71)

Wg kompilatora problemem jest linia:
this.ileNazwChce = scanner.nextInt();


Edit:
Coś tu nie gra. Skrócony przykład mi działa.

Edit2:
Wygląda na to, że błąd nie jest w kodzie, a w projekcie lub pakietach. Po przeniesieniu całego kodu do nowo stworzonego pakietu nagle zaczęło działać. Nie wiem o co chodzi. Używam Eclipse.

Edit3:
Po pewnym czasie błąd znowu wrócił. Działało, robiłem inną klasę (nie test ani User) i nagle zaczeło wywalać błędy.
Jeśli stworzę nowy projekt i stworzę nowe klasy i przekopiuję do nich kod, to one działają. Jak tworzę nowy projekt i klasy tam przenoszę, to mam te błędy.

ARCHIWUM X, nie wiem co robić, zastanawiam się nad zmianą Javy na coś innego.
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
03-18-2014, 04:42 PM
Post: #2
RE: Scanner i błąd (Unknown Source)
Ten kod, który wkleiłeś działa.
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
03-18-2014, 04:48 PM (Ten post był ostatnio modyfikowany: 03-18-2014 04:49 PM przez Jaek.)
Post: #3
RE: Scanner i błąd (Unknown Source)
Zaimportowałem CAŁY dotychczasowy program do Netbeans i też działa.
A w Eclipse nie działa. Chyba że stworzę nowy projekt i nowe puste klasy a do nich wkleję ctrl+C ctrl+V stary kod, wtedy przez chwilę będzie działać.
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
03-18-2014, 05:03 PM
Post: #4
RE: Scanner i błąd (Unknown Source)
Wkleiłem to co podałeś do Eclipse uruchomiłem kilka razy i nie robi to różnicy działa bez problemu.
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości