Was tun die Operatoren ? und : (Bedingungen)

eine Frage mal zum compareTo

Java:
  public static void main(String [] argv){
    String a = new String("Hallo"); 
    String b = new String("Hello");
    String c = new String("Hello");
    IO.println(a.compareTo(b));                        // liefert < 0
    IO.println(b.compareTo(a));                        // liefert > 0
    IO.println(b.compareTo(c));                      // liefert 0
  
  }
}

wieso liefert der bei dem ersten <0 ...worauf achtet compareTo denn?

das letzte versteh ich ja, es liefert nen 0 weil b = c gleich sind..aber auf was kommt es bei den anderen an, nur das e/a ist ja anderse mehr nicht...
 
Steht auch in der Doku: String (Java Platform SE 6)

-> Compares two strings lexicographically
Returns:
the value 0 if the argument string is equal to this string; a value less than 0 if this string is lexicographically less than the string argument; and a value greater than 0 if this string is lexicographically greater than the string argument.
 
Dann ist das also so:

bei

String a = new String("Hallo");
String b = new String("Hello");
String c = new String("Hello");

a,comp...b -> da der unterschied bei a und e ist und da das e nach a kommt ist es < 0

bei

b.com..a -> da ist a vor e und somit >0

richtig?
der macht das alphabetisch ?!
 
Dir wurde ja schon ein Link auf die Doku gegeben:

Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character sequence represented by the argument string. The result is a negative integer if this String object lexicographically precedes the argument string.
 
Zuletzt bearbeitet:
Danke. Eine weitere Frage wäre wie ich aus Bedingungen ein IF-Lösung machen kann.
Habe das oben bei euren Links gesehen, verstehe es zwar, jedoch fällt mir es schwer, das auf das folgende Beispiel anzuwenden, weil mich die ganzen compareTo's verwirren:



Beispiel:
Java:
 f.compareTo(m) == 0 ? 
      fahrrad : f.compareTo(l) == 0 ? 
 fahrrad : m.compareTo(l) == 0 ? 
 meter : f.compareTo(m) == 1 ?
                  
  m.compareTo(l) == 1 ?
  meter  : f.compareTo(l) == 1 ? 
  lenkrad : fahrrad  : m.compareTo(l) == -1 ?
   meter  : f.compareTo(l) == 1 ? 
   fahrrad : lenkrad;
  
         }

Wie kann ich das in eine IF-Lösung umwandeln:?

Mein Weg: (Scheint mir aber falsch zu sein)

if(f.compareTo(l) == 0){
f = fahrrad;
}
else if(f.compareTo(l) == 0)
f = fahrrad;
else if(m.compareTo(l) == 0)
m = meter;
else if(f.compareTo(m) == 1) ...

^^ need help 🙂
 
Zuletzt bearbeitet:
Danke. Eine weitere Frage wäre wie ich aus Bedingungen ein IF-Lösung machen kann.
Habe das oben bei euren Links gesehen, verstehe es zwar, jedoch fällt mir es schwer, das auf das folgende Beispiel anzuwenden, weil mich die ganzen compareTo's verwirren:



Beispiel:
Java:
 f.compareTo(m) == 0 ? 
      fahrrad : f.compareTo(l) == 0 ? 
 fahrrad : m.compareTo(l) == 0 ? 
 meter : f.compareTo(m) == 1 ?
                  
  m.compareTo(l) == 1 ?
  meter  : f.compareTo(l) == 1 ? 
  lenkrad : fahrrad  : m.compareTo(l) == -1 ?
   meter  : f.compareTo(l) == 1 ? 
   fahrrad : lenkrad;
  
         }

Wie kann ich das in eine IF-Lösung umwandeln:?

Mein Weg: (Scheint mir aber falsch zu sein)

if(f.compareTo(l) == 0){
f = fahrrad;
}
else if(f.compareTo(l) == 0)
f = fahrrad;
else if(m.compareTo(l) == 0)
m = meter;
else if(f.compareTo(m) == 1) ...

^^ need help 🙂

Hat das auch einen ernsten Hintergrund? Im oberen Code gibt es gar keine Zuweisung.
 
Java:
private static <T extends Comparable <T>> int blablabla( T[] table, int fahrrad, int lenkrad ){
 {

int meter = (lenkrad - fahrrad) / 2;
          T f = table[fahrrad], m = table[meter ], l = table[lenkrad];

das mit den wörtern wie fahhrad usw nicht beachten ^^ habe sie einfach so eingesetzt, als beispiel 😀
 
Hey...😉

Dein Code
Java:
 f.compareTo(m) == 0 ? 
      fahrrad : f.compareTo(l) == 0 ? 
 fahrrad : m.compareTo(l) == 0 ? 
 meter : f.compareTo(m) == 1 ?

 ....

Also ich würde so beginnen:

Java:
 if(f.compareTo(m) == 0
{
  fahrrad;
}
else
{
  if(f.compareTo(l) == 0 )
  {
    fahrrad;
  }
  else 
  {
   ....
  }
}

Kurze Erklärung:
f.compareTo(m) == 0 ? fahrrad : f.compareTo(l) == 0

IF ? TRUE : FALSE

Grüße
 
hey ama hab das in deinem system mal runtergerattert jedoch komm ich an folgender stelle nicht weiter, weil sich das dort irgendwie ändert und nicht mehr so ist wie davor...

Java:
 ... meter : f.compareTo(m) == 1 ?
                  
        		    m.compareTo(l) == 1 ?
...
 
Zeig mal den Code...


"weil sich das dort irgendwie ändert und nicht mehr so ist wie davor..."

Versteh nicht was das heißen soll?!?
Was soll den an der Stelle geschehen?

Java:
m.compareTo(l) == 1 ?

if(m.compareTo(l) == 1)
{
  ....
}
meinst du das?
 

Neue Themen


Zurück
Oben