Wyjątek w java.util.InputMismatchException

0
import java.util.*;
import java.io.*;

	public class matura {
		public static void main(String args[])  throws IOException
	    {
			double styczen[] = new double[2000];
			double luty[] = new double[2000];
			double marzec[] = new double[2000];
			double maj[] = new double[2000];
			double czerwiec[] = new double[2000];
			double lipiec[] = new double[2000];
			double sierpien[] = new double[2000];
			double wrzesien[] = new double[2000];
			double pazdziernik[] = new double[2000];
			double listopad[] = new double[2000];
			double grudzien[] = new double[2000];
	    FileReader fr = new FileReader("dane.txt");
	        Scanner plik = new Scanner(fr);
	        int rok;
	                  while(plik.hasNextInt()) {
	                 rok = plik.nextInt();
	                 styczen[rok] = plik.nextDouble();
	    			 luty[rok] = plik.nextDouble();
	    			 marzec[rok] = plik.nextDouble();
	    			 maj[rok] = plik.nextDouble();
	    			 czerwiec[rok] = plik.nextDouble();
	    			 lipiec[rok] = plik.nextDouble();
	    			 sierpien[rok] = plik.nextDouble();
	    			 wrzesien[rok] = plik.nextDouble();
	    			 pazdziernik[rok] = plik.nextDouble();
	    			 listopad[rok] = plik.nextDouble();
	    			 grudzien[rok] = plik.nextDouble();
	                  
	                  }
	    }
	
}

Program ma aktualnie tylko sobie zapisywać w tablicy temperatury z pliku tekstowego.
Podczas wykonywania zadania wyskakuje problem

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 matura.main(matura.java:24)

O to zawartość pliku testkowego

1779 -4,9 2,2 3,8 9,5 15,4 16,4 17,9 19,5 14,7 9,3 4,1 1,4
1780 -5,1 -4,3 4,4 5,9 14,2 17,2 19,4 17,9 13,1 9,4 2,8 -4,6
1781 -4,0 -1,9 1,5 9,1 13,8 19,2 20,1 22,8 16,2 6,0 4,0 -3,6
1782 -1,6 -6,2 0,9 7,3 14,1 17,8 20,3 18,3 13,4 6,4 0,3 -3,1

Próbowałem zastąpić przecinki kropkami ale też w tym nie widzi kod problemu.
Gdzie popełniam bład?
Z góry dzięki za pomoc.

0

U mnie nie ma błędów, ale czyta tylko pierwszy wiersz.
IMHO, powinno być tak

rok = plik.nextInt()-1;

W Twojej wersji rok 2000 spowoduje błąd, a roku 0 nie ma.

0

Tak wiem, lecz tylko tak zadeklarował by czytać te 4 lata co podałem w pliku tekstowym oraz chciałem tak oznaczyć by później przy przy rozwiązywaniu zadań opartych na datach nie gubić się i po prostu robić np. coś takiego
for (int k= 1972;k>1999;k++){
System.out.println(styczen(k));
}

Zaraz zainstaluję jdk i jeszcze raz sprawdzę kod, ponieważ aktualnie to tylko kompilowałem w eclipse.

0

Słyszałeś o takim miesiącu, jak kwiecień? ;-)

Może prościej będzie tak:

public class matura {
	static class Year  {
		double[] months = new double[12];
	}

	public static void main(String args[]) throws IOException {
		Year[] years = new Year[2000];
		Scanner scanner = new Scanner(new FileReader("dane.txt"));
		scanner.useLocale(new Locale("pl", "PL"));
		while (scanner.hasNextInt()) {
			Year year = years[scanner.nextInt() - 1] = new Year();
			for (int i = 0; i < year.months.length; i++) {
				year.months[i] = scanner.nextDouble();
			}
		}
	}
}
0

Krzysiek, dzięki za Twój kod, dobrze chodzi lecz mam pytanie, czy potem idzie dostać dane do każdego zczytanego roku? Np. żeby wypisać styczeń z roku 1779 po tym jak już wczyta wszystkie dane.

0

Ty poważnie pytasz, czy dla jaj?

years[1778].months[0]
0

Dobra już mam, dzięki, bo z

year[1778].months[0] 

próbowałem.

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