ArrayIndexOutOfBounds - mehrdimensionale Arrays

E99

Aktives Mitglied
Hallo!

Ich bekomme eine ArrayIndexOutOfBounds-Exception in folgendem Code.

Java:
public Double[][] loadWeekData(Stock stock, int day1, int month1, int year1) {
		
		Stock stock1 = stock;

		long currentTime = (new Date()).getTime();
		Double[][] value = new Double[5][4];

		try {

			URL yahoofin = new URL(
					"http://ichart.finance.yahoo.com/table.csv?s="
							+ stock1.getSymbolName() + "&a=" + (month1 - 1)
							+ "&b=" + day1 + "&c=" + year1 + "&d="
							+ (month1 - 1) + "&e=" + (day1 + 5) + "&f=" + year1
							+ "&g=d" + "&ignore=.cvs");

			URLConnection yc = yahoofin.openConnection();

			BufferedReader in = new BufferedReader(new InputStreamReader(
					yc.getInputStream()));

			String inputLine;
			String[][] data = new String[5][4];
			int count = 0;
			while ((inputLine = in.readLine()) != null) {
				String[] test = inputLine.split(",");
								
					data[count][0] = test[0];
					data[count][1] = test[1];
					data[count][2] = test[2];
					data[count][3] = test[3];
			
				count++;
				
			}
			in.close();
			for (int i = 0; i < (data.length); ++i) { //lädt daten in return-array: letzter wert ist unwichtig!
				value[i][0] = Double.valueOf(data[i][0]);
				value[i][1] = Double.valueOf(data[i][1]);
				value[i][2] = Double.valueOf(data[i][2]);
				value[i][3] = Double.valueOf(data[i][3]);
			}

		} catch (NumberFormatException ex) {
			System.out.println("Number-Exception" + ex.getMessage());
		}

		catch (Exception ex) {
			ex.printStackTrace();
		}

		return value;

	}

Ich benutze hier YahooFinance... Die übergeben einem die "HIgh, low, open und end" kurse eines Tages in einer Zeile der CSV-Datei.

Bitte um HIlfe!
 
Die Zeile wäre nett, aber mal frei ins Blaue getippt: In der csv-Datei werden die Spalten nicht mit
Code:
","
sondern mit
Code:
";"
getrennt, weswegen das split ein Array mit nur einem Element liefert.

Ansonsten seh ich jetzt keine direkte Quelle.
 
frag doch einfach ab ob test.length == 4 ist. Deine zuweisungen könntest du auch schön in einer for schleife machen.
 
Bei so was bietet es sich doch an, einfach zu Debuggen und den Haltepunkt bei jedem ArrayIndexOutOfBounds-Exception einzustellen. Schon mal gedebugged?
 
Hi E99

Wie lange loop das da unten ?

Java:
            String[][] data = new String[5][4];
            int count = 0;
            while ((inputLine = in.readLine()) != null) {
                String[] test = inputLine.split(",");
                                
                    data[count][0] = test[0];
                    data[count][1] = test[1];
                    data[count][2] = test[2];
                    data[count][3] = test[3];
            
                count++;
            }

Ich würde mal sagen nach der 5ten eingelesenen Zeile ist schluss.
Du hast ja Dein 3Dimensionales Feld auf
Java:
String[][] data = new String[5][4];
eingeschränkt.

Ein kleiner Breakpoint bzw. eine Textausgabe in diesem Loop würde für Klarheit sorgen.

Pentalon
 
Danke für die ganzen Antworten!

Ich bin schon selbst mittlerweile auf die Lösung gekommen!

Ich hatte vergessen, dass in der csv file eine Zeile als Erläuterung der Daten dient. 5 Tage + eine Erläuterung = 6!!! Mein Array hatte nur 5 Zeilen...

@bERt0r : Ich hatte das ganze in einer for-Schleife. Die hab ich nur zu Fehlersuchzwecken entfernt...
 

Neue Themen


Zurück
Oben