Ausgabe wird falsch angezeigt!

Ravenhall

Mitglied
Hallo hoffe alle haben Weihnachten gut überstanden.
Vllt. könnt ihr mir bei einem Ausgabeproblem helfen.
Ich schreibe gerade einen Bubble Sort Algo. Und bei der Ausgabe soll zum Beispiel folgendes rauskommen:

( 1 3 )
( 0 1 )
bei mir allerding kommt das hier raus:

(1) (3)
(0) (1)

Wo genau liegt da mein Fehler. Hier mein bisheriger Code.
Die Ausgabe ist in Zeile 35 und ich denke der Fehler ist direkt dort. Weis allerding nicht wie ich es anders ausgeben kann. Bitte um Hilfe.

Java:
public class Bsp {
   
      public static void main(String[] args) {
      
         int laenge = 0;      
         System.out.print("Bitte geben Sie die Länge ein und danach die Elemente: ");
         
         laenge = SavitchIn.readLineInt();
         
         int[] element = new int [laenge];   //Erstelle Array mit eingegebener Laenge
      
         for (int i=0; i < element.length; i++){		//Zahlen werden solange eingelesen bis sie    die Laenge der Elemente erreicht haben
            element[i] = SavitchIn.readInt(); 			//wird in ein Array geschrieben
         }
         
         System.out.println();
         
         
         int hilf,help=0,zuw=0, ausgabeZaehler=0;
      	
         for (int i=element.length-1; i >0; i--) {		//Mit diesem Befehl werden die Werte von 
         
            for (int j = 1; j <=i; j++) {
            
               if (element[j-1] > element[j]) {
               
               
                  help = help++;		             //Vertauschen der Zahlen 
                  hilf = element[j-1];
                  element[j-1] = help;
                  //zuw = zuw++;
                  element[j] = hilf;
                  //zuw = zuw++;
                  
                  System.out.print("( " + (j-1) + " )");
                  
               
                  
                  ausgabeZaehler++;
               }
               
            	
               if(ausgabeZaehler==2){                 //Gibt zahlen in der richtigen Form aus
               
                  System.out.println();		//Neue Zeile anfangen
                  ausgabeZaehler=0;		//mit Zaehler neu beginnen
               }
            
            
            }
         }   
         
         System.out.println("( "+" )");   
      }
                    
   }
 
Hallo,
du gibst bei jeder deiner ausgaben ( und ) willst aber das nur bei der ersten ausgebebenen Zahl ( und nur bei der zweiten ausgegebenen Zahl ein ) ausgeben wird. D.h. du brauchst noch eine Frage bei welcher Ausgabe du gerade bist.
 
Kannst du mir vielleicht noch einen tip geben ich weis nicht wie ich damit beginnen soll?!
Mach ich das mit if else? Wenn ja, was steht denn dann im Schleifenkopf?
 
So wie du es bis jetzt geschrieben hast müsstest du vor dem system.out.print ein
Java:
 if(ausgabeZaehler == 0){system.out.print("( ");}
,direkt nach dem system.out.print ein
Java:
 if(ausgabeZaehler == 1){system.out.print(" )");}
und beim system.out.print die ( und ) weg machen.
 
Ja das hatte ich nicht bedacht.
Dan wäre es so besser
Java:
if(ausgabeZaehler==2){
               system.out.print(" )");
                  System.out.println();
                  ausgabeZaehler=0;
               }
 
Dieser Code ändert leider auch nichts an der Ausgabe. Sie bleibt bei:
( 2 3 )
( 1 2 )
( 0

oder ich hab es in die falsche Zeile geschrieben. Von meinem Code ausgehen in welcher Zeile sind wir? Immer noch in der nach meiner Ausgabe oder in der am Ende?
 
Vielen Dank jetzt geht es. Danke
Hab aber nochmal ne kleine Frage. Wenn ich es am Schluss aus ästetischen Gründen haben wollte, das () ausgegeben wird. Wie mach ich das ohne das ich es als Standart setze? Hatte es versucht mit

Java:
if(ausgabeZaehler!=0 && ausgabezaehler!=1){
System.out.println ("("+")");
Leider geht das aber nicht hatte es vor diie Sys... (")"); Ausgabe gemacht.
 
Hätte da nochmal ne Frage zu. Hab zwar das Programm fertig, jedoch würde mich noch interressieren:
Wenn ich die Klammer am schluss "()" ausgeben möchte sobald eine Bedingung kommt und nicht jedesmal nur weil ich es dem Programm sage. Wie würde das gehen. Also er soll wenn nichts mehr gemacht werden kann eine leere Klammer ausgeben. Wie wäre der Befehl, und am wichtigsten für mich, wo müsste der stehen. Damit hab ich leider immernoch meine Probleme!!😳
 

Zurück
Oben