Bubblesort und Array

Status
Nicht offen für weitere Antworten.

Dissmaster

Mitglied
Hallo,

ich bin eine absolute JAVA Jungfrau.
Ich studiere E-Technik und muss da ein Java Praktikum absolvieren. Eine Aufgabe ist es Bubblesort zu proggen. Den Code selbst, habe ich mir aus dem Netz gezogen, aber jetzt will ich den etwas verfeinern. Und zwar würde ich gerne den Benutzer fragen wie viele Zahlen er sortieren will. Dann soll er die Zahlen nacheinander eingeben, das mache ich mit einer for Schleife. Die Zahlen sollen in ein Array gespeichert weden, das array ist aber int und wenn ich die Zahlen einlese, dann sind sdie doch String, oder???
Kann mir da jemand helfen???
Dann habe ich ein Problem mit JBuilder X, ich habe gelesen, das es die Möglichkeit gibt mit der Funktion
import java.util.Scanner.*; (glaube ich)
Tastaturbefehle einzulesen. Wenn ich das aber so in mein Programm schreibe, dann erkannt er nicht den Befehl Scanner, er wird mir aber auch nicht angezeigt, liegt das an JBuilder x oder an mir???

mfG
 
Das .* muss weg. Ausserdem musst du mindestens das JDK1.5 installiert haben.
Wenn du hier in der Forensuche Scanner eingibst wirst du vermutlich mit einigen Beispielen belohnt.
 
Vielen Dank für die schnelle Antwort.
Weist du wo ich den jdk1.5 runterladen kann???
Hier ist mein Bubblesort Text, könntest du da mal drüberschauen, ich lasse das Array immer überlaufen, hab keine ahnung warum.

Code:
package bubblesort;
import java.io.*;


public class BubbleSort {

  public static void main(String[] args)throws IOException {
    String str,zahl;
    int anzahl;
    boolean p; int dummy;
    
    BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Bitte geben Sie die Anzahl der sortierenden Zahlen ein: ");
    str = eingabe.readLine();//einlesen der Anzahl
    anzahl = Integer.parseInt(str);//umwandeln von String in int
    //System.out.print(anzahl);
    

    int feld[] = new int[anzahl];
    
    for(int w = 1;w<=feld.length;w++){ //hier liegt das Problem
      System.out.print("Bitte geben sie die "+w+" Zahl ein: ");//wie soll ich die Zahl den in einem int array speichern
      zahl = eingabe.readLine(); //da die zahl doch ein String ist oder???
      feld[w] = Integer.parseInt(zahl);
    }

    System.out.println(feld);
    // Ausgabe des Ausgangesfeldes
    for( int k = 0; k < feld.length; k++)
      System.out.print( " " + feld[ k]);
    System.out.println( "");

    for( int i = feld.length; i > 1; i--)
    { p = true;
      for( int j = 1; j < i; j++)
        if( feld[ j - 1] > feld[ j])
        {
          p = false; dummy = feld[ j - 1];
          feld[ j - 1] = feld[ j]; feld[ j] = dummy;

          for( int k = 0; k < feld.length; k++)
            System.out.print( " " + feld[ k]);
          System.out.println( "");
        }
        if( p) break;
    }*/
  }

  }
 
Deine Schleifen muss bei 0 anfangen und nur bis w< feld.length gehen!!

Code:
for(int w = 0;w<feld.length;w++){ 
      System.out.print("Bitte geben sie die "+w+" Zahl ein: ");
      zahl = eingabe.readLine();
      feld[w] = Integer.parseInt(zahl);
    }
 
Das Programm sehe dann folgendermaßen aus:

Code:
import java.io.*;

public class Test {

  public static void main(String[] args)throws IOException {
    String str,zahl;
    int anzahl;
   
    BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Bitte geben Sie die Anzahl der sortierenden Zahlen ein: ");
    str = eingabe.readLine();//einlesen der Anzahl
    anzahl = Integer.parseInt(str);//umwandeln von String in int
    //System.out.print(anzahl);
   

    int feld[] = new int[anzahl];
   
    for(int w = 0;w<feld.length;w++){
        System.out.print("Bitte geben sie die "+w+" Zahl ein: ");
        zahl = eingabe.readLine();
        feld[w] = Integer.parseInt(zahl);
    } 

    System.out.println("Ausgangsordnung:");
    
    for( int k = 0; k < feld.length; k++){
      System.out.print(" " + feld[k]);
    }
    System.out.println(" \n");

    
    for(int i = 0; i<feld.length; i++){
    	for(int a=i; a<feld.length; a++){
    		if(feld[i]>feld[a]){
    			int puffer=feld[a];
    			feld[a]=feld[i];
    			feld[i]=puffer;
    		}
    	}
    }
    
    System.out.println("Sortierte Ordnung:\n");
    for(int i=0; i<feld.length; i++){
    	System.out.print(" "+feld[i]);
    }
    
  }}

Hab die Sortiermethode ein wenig verändert. :wink:
 
ich glaube die folgende Sortiermethode dürfte noch performanter sein
Code:
	boolean isSorted;
	int tmp;
	do
	{
		isSorted = true;
		for(int i = 1; i < feld.length; i++)
		{
			if(feld[i - 1] > feld[i])
			{
				tmp = feld[i - 1];
				feld[i - 1] = feld[i];
				feld[i] = tmp;
				isSorted = false;
			}
		}
	}
	while(!isSorted);

(wenn man bei BubbleSort wirklich von Performance sprechen kann)
 
ah die edlen ritter helfen einer armen jungfrau - sehr nobel.

alles was du fuer java brauchst findest du unter http://java.sun.com. ansonsten helfen die FAQs hier im Forum schon sehr fuer den anfang.

viel spass
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben