Daten vergleichen

  • 4 Antworten
  • Letztes Antwortdatum
K

kobra83

Fortgeschrittenes Mitglied
14
Nabend ich hab ein kleines Problem beim programmieren.
Ich lade Daten aus einer CSV Datei in mehrere Arrays, dies klappt auch alles.
Die Daten kann ich mir auch wie ich es will anzeigen lassen, bis auf eine Array, in dem Zahlen von 0 bis 7 stehen:

Code:
....
//Deklaration
String lieferung_array[] = {"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"};
....


public void tour_laden(){
        
        StringBuilder text_array = null;;
        String Test;
        String Datei = ((String) "/Arbeit/Route.csv"); 
        File root = Environment.getExternalStorageDirectory();
        
         StringBuilder text = new StringBuilder();

         try {

         File sdcard = Environment.getExternalStorageDirectory();

         File file = new File(sdcard,"/Arbeit/Route.csv");
              BufferedReader br = new BufferedReader(new FileReader(file));  

             String line;   

             while ((line = br.readLine()) != null) {

                         text.append(line);
                         
                         text_array=text;
                        } 
             zwischen = String.valueOf(text);
             
             }
          catch (IOException e) {

             e.printStackTrace();
         }
          
         int z=0;
         int a=0;
        
         String string_Array_test[]=zwischen.split("[;]"); 

         for(z=0;z<=24;z++){
             
             local_array[z]=string_Array_test[a];
             a=a+2;
             ankunft_soll_array[z]=string_Array_test[a];
             a++;
             abfahrt_soll_array[z]=string_Array_test[a];
             a++;
             lieferung_array[z]=string_Array_test[a];
             a++;
             offen_array[z]=string_Array_test[a];
             a++;         
       }
.............

if("0".equals(lieferung_array[i])){
             lie.setText("Text1");
             }
         if(lieferung_array[i].equals("1")){
             lie.setText("Text2");
             }
         if(lieferung_array[i].equals("2")){
             lie.setText("Text3");
             }
         if(lieferung_array[i].equals("3")){
             lie.setText("Text4");
             }
         if(lieferung_array[i].equals("4")){
             lie.setText("Text5");
             }
         if(lieferung_array[i].equals("5")){
             lie.setText("Text6"); 
             }
         if(lieferung_array[i].equals("6")){
             lie.setText("Text7");
             }
         if(lieferung_array[i].equals("7")){
             lie.setText("Text8");
             }
         else{
             lie.setText("Kein Vergleich");
         }
Ich bekomme im TextView aber immer Kein Vergleich ausgegeben.
Was ist bei der Abfrage falsch?
 
Zuletzt bearbeitet:
Versuch's mal mit compareTo() statt equals(). Das eine vergleicht den Inhalt und das andere die Objektreferenzen.


Noch ein Tipp: Gib deinen Variablen sprechendere Bezeichner. "hallo" ist ein denkbar ungünstig gewählter Bezeichner, außer es steht wirklich "hallo" in dem String.
Zum Rest sage ich jetzt besser nichts :flapper:
 
compareTo gibt mir die folgende Fehlermeldung:

Type mismatch: cannot convert from int to boolean

PS:
Ich verstehe sowieso nicht wieso mein Quellcode beim kopieren hier ins Forum immer seine Formatierung verliert
 
Siehe Doku:
http://developer.android.com/reference/java/lang/String.html#compareTo(java.lang.String) schrieb:
public int compareTo (String string)
[...]
Returns
0 if the strings are equal, a negative integer if this string is before the specified string, or a positive integer if this string is after the specified string.

Zur Formatierung: Versuch es mal mit einem
Code:
-Block und nicht mit einem [quote]-Block


Ergo:
[code]
if (a.compareTo(b) == 0)
{
    // a und b sind textlich gleich
}



EDIT: Alternativ mag auch equalsIgnoreCase() in deinem Fall gehen.
 
Zuletzt bearbeitet:
Wie kann ich aus einer CSV die im RAW Verzeichnis liegt, eine bestimmte Zeile ansprechen per readLine() ?
Stimmt das, dass man eine Zeile nicht direkt ansprechen kann ohne ein paar Tricks anzuwenden ?

Bisher nimmt er immer nur meine letzte Zeile, klar weil ich das ganze mit :

while ((Zeile = in.readLine()) != null) { ....

While erledige, und die Bedingung ist ja, dass die nächste Zeile keine Wert hat, solange macht er das und spuckt die Zeile aus.
Muss ich in meiner CSV Datei noch eine extra Spalte einfügen, mit einem bestimmten Zeichen ( ENDL ), dass mein Code dann weiß, es ist jetzt Zeilenende ? .... und dies dann mit einem

Scanner : scanZeile.useDelimiter("ENDL"); abfragen ?

Danke im voraus, ich wäre euch echt dankbar. Ich tüftele schon seit 2,3 Stunden...
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben Unten