Dziwne błędy java.util.

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 + ",");
				}
			}
	}
}
0

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

0

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

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