Erste Schritte Probleme bei Aufgaben zu Schleifen

Ceaser87

Mitglied
Java:
public class Median {
public static void main(String[]args){
  int a = 4;
  int b = 7;
  int c = 2; 
  int middle = 0;
  int d = 0;
 
       System.out.print(a);
       System.out.print(" ");
       System.out.print(b);
       System.out.print(" ");
       System.out.println(c);
       
          if((a > b)&&(a < c))
              a = middle;
          else
              if((a < b)&&(a > c))
                  a = middle;
              else
          if((b > a)&&(b < c))
              b = middle;
          else
              if((b < a)&&(b > c))
                  b = middle;
              else
          if((c > a)&&(c < b))
              c = middle;
          else
              if((c < a)&&(c > b))
                  c = middle;
         
                   
          if(d == 0)
         System.out.println(middle);
       
} 
}
Hallo alle zusammen,

Ich versuche mir seit einiger Zeit das Programmieren mit Java beizubringen mit Hilfe eines Buches und Videos aus dem Internet.Am Ende jedes Kapitles im Buch gibt es einige Übungsaufgaben.Ich bin grade am Ende von kapitel 3(Schleifen) angekommen.Bei einer der Aufgaben muss man ein Programm erstellen,dass die mitllere aus drei Zahlen rauschreibt.Ich habe versucht,dass die drei Zahlen miteinander verglichen werden und dann die mittlere Zahl den Wert middle ersetzt.Den Wert middle hab ich auf Null gesetzt.Aber am Ende wird auch immer Null ausgegeben.Ich hoffe ihr könnt mir helfen.

MfG
Ceaser87
 
und was hat das mit schleifen zu tun?
und natürlich wird 0 ausgegeben, du setzt middle am anfang auf 0 und änderst den wert nie. Du setzt dann nur die anderen werte a/b/c auf middle
 
Also erstmal bin ich gar kein Fan davon ifs ohne geschweifte klammern zu machen. Dann sind if Bedingungen keine schleifen, und wozu du die variable D brauchst ist mir auch nicht ganz klar. Ich bin mir ziemlich sicher, dass das falsche Ergebnis mit der unsauberen Struktur deiner ifs zu tun hat.. Wenn du das sauber schreibst wirst du sicher schnell eine Lösung finden.
Oh und ich seh Grad das deine Zuweisung falsch ist. Wenn du middle ändern willst muss das middle auf der linken Seite stehen
 
Java:
public class Middle {

  public static void main(String[] args) {
   
    int a = 4 ;
    int b = 7 ;
    int c = 2 ;
    int middle = 0;
   
    if ((a>b && a<c) || (a<b && a>c)) {           // Var. a wird gefragt ob die
                                                  // erste Vorraussetzung UND
                                                  // zweite Vorraussetztung ODER
                                                  // dritte UND vierte
      middle = a;                                 // Vorraussetztung erfüllt ist
    }else{
      if ((b>a && b<c) || (b<a && b>c)) {         // Var. b wird das selbe wie
        middle = b;                               // Var a gefragt
      }else{                                      // Wenn beide nicht middle
        middle = c;                               // sind dann mache c zu
                                                  // middle.
      }
      }
      System.out.println(a+", "+b+", "+c+".");    // Zum schluss ausgabe
      System.out.println("-------");
      System.out.println(middle);
    }
  }




Hi Ceaser87,

da ich ein genauso blutiger Anfänger bin habe ich auch gleich versucht das Problem zu lösen...
Das mit dem verdrehten Variablen wurde dir ja schon gesagt.
ich habe den Code etwas ein gekürzt mit dem || ODER Operator um einige Schleifen herauszunehmen.
und die Var c prüfe ich nicht mehr ab, wenn die Schleifen für a und b schon false sind.

Aber interessantes Buch wenn es Übungen gibt zum Ende der Kapitel. Wie heißt das Buch?


Gruß PoGoMoTo
 
Guten Abend Community,

tut mir leid, dass ich mich hier so einmische, aber ich will keinen neuen Thread aufmachen. Und zwar habe ich eine Frage. Wie kann man bei verketteten Schleifen die Ausgabe auf nur eine Zeile ausgeben und fängt nicht ständig eine neue Zeile an. Hier mal ein Programmierbeispiel:

Java:
public class mantisse{
public static void main(String[] args){
    double a = 1.125;
    double b = a - 1;

for(int i = 0; i < 23; i++){
    if( b * 2 >= 1){
        b--;
        System.out.println("1");
}
        else{
        System.out.println("0");
            b = b * 2;
          
}  

}
}


}

Als Ausgabe erhalte ich:
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

Ich würde aber gerne folgende Ausgabe erhalten: 00100000000000000000000

Vielen Dank im Voraus.

Gruß,

Maxim
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben