2017-05-08 1 views
0

tubeDataSplit hat mehrere Zeilen mit 4 Nummern getrennt durch ; jeder Zeile. tubeDataSpliter sollte diese 4 Nummern teilen und auf TubeData verwenden.Android - Außerhalb der Grenzen auf einem einfachen Array

Mein Problem ist, dass, wenntubeDataSplit größer als 4 ist das Programm stürzt ab, weil tubeDataSpliter Array außerhalb der Grenzen ist. Also ich nehme an, tubeDataSpliter ist die Größe des; Abstände.

Wie kann ich dies vermeiden?

String[] tubeDataSplit = tubeDataString.split("\\n"); 
    String[] tubeDataSpliter; 

    for(int i=0; i<tubeDataSplit.length -1;i++) { 


     tubeDataSpliter = tubeDataSplit[i].split(";"); 


     if (tubeDataSpliter[i] != null) { 
      TubeData newTubeData = new TubeData(tubeDataSpliter[0], Float.parseFloat(tubeDataSpliter[1]), Float.parseFloat(tubeDataSpliter[2]), Float.parseFloat(tubeDataSpliter[3])); 
      tubeDataArrayList.add(newTubeData); 

     } 

    } 
+0

nvm ... Ich kann 'tubeDataSpliter [i]' es ist 'tubeDataSplit [i]' nicht verwenden. –

+0

define 'tubeDataSpliter' Array mit gleicher Größe des' tubeDataSplit' Array –

+0

Überprüfen Sie 'tubeDataSpliter' Größe anstelle von' null'. –

Antwort

1

Ändern Sie bitte Ihre, wenn die Bedingung mit folgenden Code:

if (tubeDataSplitter != null && tubeDataSpliter.length >=4) { 
      TubeData newTubeData = new TubeData(tubeDataSpliter[0], Float.parseFloat(tubeDataSpliter[1]), Float.parseFloat(tubeDataSpliter[2]), Float.parseFloat(tubeDataSpliter[3])); 
      tubeDataArrayList.add(newTubeData); 

     } 
0
for(int i=0; i<tubeDataSplit .length(); i++){ 

    TubeData newTubeData = new TubeData(); 
    newTubeData.setTubeData(tubeDataSpliter[i]); 
    tubeDataArrayList.add(newTubeData); 
} 

// In TubeData.class Zeichenfolge hinzuzufügen und erzeugen Getter und Setter

private Strind tubeDate; 
0

if (tubeDataSpliter[i] != null) { falsch ist.

Wenn Sie mehr als 4 Zeilen haben als i 4 wird oder größer und tubeDataSpliter[4] über die Grenzen des Arrays ist, da sie die Länge 4.

, was man in dieser Zeile stattdessen tun sollten, ist:

if (tubeDataSpliter.length == 4) {

Verwandte Themen