Dziwne błędy java.util.

2016-06-01 15:07
0

Chciałem napisać program który miał wykonywać następujące czynności:
Wyświetlać nazwy trzech przedmiotów:
1.Matematyka
2.Polski
3.Angielski
Następnie po wyborze 2 i 3 podawać oceny.
TO WSZYSTKO DZIAŁA DOBRZE

Jednak przy wyborze 1 czyli Matematyki program miał wyświetlić tekst:
"Jeżeli chcesz dodać oceny wpisz 1, a jeżeli chcesz je wyświetlić wpisz 2"
Następnie po wyborze jedynki po podaniu przez nas cyfry miał ją dopisywać do ocen z Matematyki a po wyborze 2-ki wypisywać oceny z Matematyki. Jednak tu pojawia się następujący błąd:

Exception in thread "main" java.util.NoSuchElementException
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 jppp.main(jppp.java:32)

OTO MÓJ PROGRAM:

import java.util.ArrayList;
import java.util.Scanner;

class jppp {
    public static void main(String[] args) {
        ArrayList<Integer> matematyka = new ArrayList<Integer>();
        ArrayList<Integer> polski = new ArrayList<Integer>();
        ArrayList<Integer> angielski = new ArrayList<Integer>();

        System.out.println("Oto twój mały dzienniczek ucznia");
        System.out.println("Wybierz przedmiot aby sprawdzić lub dodać oceny");
        System.out.println("1.Matematyka");
        System.out.println("2.Polski");
        System.out.println("3.Angielski");
        matematyka.add(4);
        polski.add(3);
        angielski.add(1);

        int cyfra;
        int cyferka;
        int rozmiar;
        int ocena;
        int ocenka;
        int o;
        Scanner odczyt = new Scanner(System.in);
        cyfra = odczyt.nextInt();
        odczyt.close();

        if (cyfra == 1) {
            System.out.println("Jeżeli chcesz dodać oceny wpisz 1, a jeżeli chcesz je wyświetlić wpisz 2");
            Scanner odczyt1 = new Scanner(System.in);
            cyferka = odczyt1.nextInt();
            odczyt1.close();
            if (cyferka == 1) {
                System.out.println("Podaj ocenę którą chcesz dodać do dzienniczka");
                Scanner odczyt2 = new Scanner(System.in);
                ocenka = odczyt2.nextInt();
                odczyt2.close();
                o = ocenka;
                matematyka.add(o);

            }  

            if (cyferka == 2) {
                rozmiar = matematyka.size();
                for (int p = 0; p < rozmiar; p++) {
                    ocena = matematyka.get(p);
                    System.out.print(ocena + ",");
                }
            }
        }
        if (cyfra == 2) {
                System.out.println("Jeżeli chcesz dodać oceny wpisz 1, a jeżeli chcesz je wyświetlić wpisz 2");
                rozmiar = polski.size();
                for (int p = 0; p < rozmiar; p++) {
                    ocena = polski.get(p);
                    System.out.print(ocena + ",");
                }
            }

        if (cyfra == 3) {
                System.out.println("Jeżeli chcesz dodać oceny wpisz 1, a jeżeli chcesz je wyświetlić wpisz 2");
                rozmiar = angielski.size();
                for (int p = 0; p < rozmiar; p++) {
                    ocena = angielski.get(p);
                    System.out.print(ocena + ",");
                }
            }
    }
}
edytowany 2x, ostatnio: olesio, 2016-06-01 15:29
Kod wstawiaj zawsze w konkretne tagi koloryzujące. Na przykład `<code=java>. Poprawiłem, ale następnym razem taki wątek trafi do Kosza za brak szacunku do Czytelnika. - olesio 2016-06-01 15:30

Pozostało 580 znaków

2016-06-01 15:17
0

Problemem jest to, że tworzysz kilka obiektów Scanner na tym samym InputStream.

Pozostało 580 znaków

2016-06-01 15:19
0

Okej, a jak temu zapobiec bo nie do końca rozumiem :(?

Pozostało 580 znaków

2016-06-01 15:21
0

Zapoznaj się z fachowymi informacjami: https://www.securecoding.cert[...]ngle+byte+or+character+stream
Potem po prostu używaj jednego obiektu.

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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