bad operand types for binary operator >

Immo Primus

Mitglied
Moin!
Hier erstmal der Code-Auschnitt:
1 if (l.equals(D))
2 {
3 String[] a = new String[(int)(Math.pow(2, (k+1)+1)-1)];
4 int b = 0;
5 int i = 0;
6 for (int w = b; w < a.length; w++)
7 {
8 a[w] = "0";
9 a[0] = "F";
10 while (i < a.length)
11 {
12 while(a != "0")
13 b++;
14 a = "R";
15 b++;
16 for(int c = b-1; c-(b-c) >= 0; b++)
17 {
18 if (a[c-(b-c)] == "R")
19 a = "L";
20 else if(a[c-(b-c)] == "L")
21 a = "R";
22 else
23 a = "F";
24 }
25 while(i < a.length && a > "0")
26 i++;
27 }
28 System.out.println(a.length);
29 for( int h = 0; h < a.length; h++)
30 System.out.print(a[y]);
31 System.out.print("\n");

Es geht um Zeile 25. Beim kompilieren bekomme ich folgende Fehlermeldung:
" java:92: error: bad operand types for binary operator '>' "
Ich weiß irgendwo das ">" nicht die Lösung sein kann, aber mir fehlt eine alternative..
Vielen Dank für jede Hilfe!
 
" java:92: error: bad operand types for binary operator '>' "
1. Fehlermeldung lesen. Der zweite Teil haut nicht so ganz hin

Was erwartest du, wie ein String auf größerheit mit einer Zahl verglichen werden soll?

3. Den Zahlentyp char nehmen, wär zu empfehlen! 🙂

4. Falls nicht: while(i < a.length && a.compareTo("0") > 0) u.s.w.

oder while(i < a.length && "0".compareTo(a) < 0), das besser
 
Bitte gib dein Programmcode nächstes mal in Code - Form an. Das kannst du unter Einfügen --> Code ganz einfach machen.

Ich habe mir darum den Code nicht komplett angeschaut aber ich kann dir trotzdem mögliche Fehler nennen:

1.) Du hast ein String Array a erstellt und versuchst nun zu überprüfen, ob die Referenz(Speicheradresse) die in der Variable a liegt, größer ist als 0. Das geht nicht.

Merke dir: gerechnet oder verglichen werden kann nur mit den Primitiven Datentypen.

2.) Außerdem musst du die stelle aus deinem Array angeben, welcher verglichen werden soll.

Bsp.
Java:
String  [] a = new String[(int)(Math.pow(2, (k+1)+1)-1)];
    int i = 0;
    while((i < a.length) && (Integer.parseInt(a[i]) > 0)){
        //TODO Code
    }
Deine Zeile in Kurzform.

Wie oben schon gesagt können nur primitive Datentypen verglichen werden.
Du kannst die Methode Integer.parseInt() benutzen, um einen String in einen Integer Wert umzuwandeln, danach kannst du diese auch mit der Zahl 0 vergleichen...
 
2.) Außerdem musst du die stelle aus deinem Array angeben, welcher verglichen werden soll.

Bsp.
Java:
String  [] a = new String[(int)(Math.pow(2, (k+1)+1)-1)];
    int i = 0;
    while((i < a.length) && (Integer.parseInt(a[i]) > 0)){
        //TODO Code
    }
Deine Zeile in Kurzform.
.

Das wird wohl niemals mehr als einmal duurchlaufen. Denn das ganze Arraay wird niemals mit mehr als einem String befüllt. Das was der TO vor hat, einen String zu behandeln wie eine mehrstellige Zahl indem in er durch einen Arrayzugriff auf die einzelnen Buchstaben (oder in diesem Fall Zahlen) zugreifen kann funktioniert so nicht.

Der Ganze Code ist ziemlich verkorkst. Das Array ist komplett überflüssig. Der String eigentlich auch. Er benutzt den nur weil er nicht weiß wie er mathematisch an die einzelnen 10er-Stellen seiner Zahl kommt, was es natürlich auch nicht besser macht.

Gruß

Claus
 
Moin,
Ich weißt das der Code verkorkst ist... Ist leider eine Hausaufgabe mit bestimmten vorgaben d.h. der array etc. Ich hätte es ohne die vorgaben auch anders gelöst..
Vielen Dank für eure Hilfe!
 
ja, wir können auch helfen, aber dafür musst du zuerst den Code richtig formatiert angeben. Wie das geht, steht in meiner Siggi.

Versteh mich nicht falsch, keinerlei Einrückung erschwert das Auge - und weggelassene öffnende Klammern ist syntaktisch falsch.
 

Zurück
Oben