Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe in meiner Ausbildung die Aufgabe die Zeichen einer String varbiable per Bubble Sort Verfahren alphabetisch zu sortieren... Das Programm was ich habe, kann jedoch nur einzelne Wörter sortieren, nicht aber DIE ZEICHEN (Buchstaben) eines Wortes.
Der Quellcode sieht so aus:
Code:
class Bubble{
public static void main(String[] args){
String[] r;
int i;
String tmp;
boolean done;
r = new String[]{"Daniel", "Christian", "Mark"};
do{
done = true;
for(i=0; i<r.length-1 ; i++){
if(r[i].compareTo(r[i+1]) > 0){
tmp= r[i]; r[i]=r[i+1]; r[i+1]=tmp;
done= false ;
}
}
}while(!done);
for(i=0; i<r.length;i++){
System.out.println(r[i]+ " ");
}
}
}
Das funktioniert auch soweit! Aber es sollte eben SO laufen, dass r nur aus einem Begriff (z.B. Daniel) besteht und die Ausgabe zum ende dann so aussieht. "aDelin"
Das einzige was ich finden kann ist die charAt Methode.. aber ich habe keine Ahnung, wie ich diese nun verwenden kann/soll. Wäre sehr nett, wenn ihr mir helfen könntet.
ein char[] zu einem String[] zu machen, ist imho nicht so prima, nur um compareTo anwenden zu können.
eine eigene compareTo-methode ist hier schneller geschrieben:
Code:
public class Testklasse {
public static void main(String[] args) {
//String wort = args[0];
String wort = "sortieremich";
char[] buchstaben = wort.toCharArray();
String wortSortiert = bubbleSort(buchstaben);
System.out.println(wortSortiert);
}
public static int compareChars(char c1, char c2) {
return (c1 - c2);
}
public static String bubbleSort(char[] buchstaben){
//String[] r;
int i;
char tmp;
boolean done;
//r = new String[]{"Daniel", "Christian", "Mark"};
char[] r = buchstaben;
do{
done = true;
for(i=0; i<r.length-1 ; i++){
if (compareChars(r[i], r[i+1]) > 0){
tmp= r[i];
r[i]=r[i+1];
r[i+1]=tmp;
done= false ;
}
}
}while(!done);
return new String(r);
}
}
Ich habe eine Menuefunktion mit mehreren Unterprogrammen. Nun soll dieser Progrmmcode einer dieser Unterprogramme sein. Jetzt der og. Programmcode eine eigene Klasse. Wie kann ich den in einen case einbauen??? Sorry bin auch Anfänger!!!
Ich habe eine Menuefunktion mit mehreren Unterprogrammen. Nun soll dieser Progrmmcode einer dieser Unterprogramme sein. Jetzt der og. Programmcode eine eigene Klasse. Wie kann ich den in einen case einbauen??? Sorry bin auch Anfänger!!!
Danke schonmal für eure Antworten... ich versuche nun das ganze in meinem Programm zu vereinen... Leider spuckt der Compiler mir immernoch eine Fehlermeldung aus... ich denke der Fehler wird ziemlich klein sein....
Interessant sind vor allem die Stellen hinter dem "Case 3" und unten halt die komplette Klasse unten.
Code:
import java.io.*;
class Menue{
static public void main (String[] args)throws IOException{
String line = "";
String weiter="J";
String buchstabe ="";
double ja;
//do{
System.out.println("Bitte geben Sie das Wort ein: ");
BufferedReader eingabe = new BufferedReader (new InputStreamReader (System.in));
line = eingabe.readLine();
if(line.length() == 0)
System.out.println("\n \n" + "Bitte geben Sie ein Wort ein!");
else{
System.out.println("Treffen Sie bitte Ihre Auswahl");
System.out.println("1 - Nach Buchstabenpostion suchen");
System.out.println("2 - Wort in Spiegelschrift ausgeben");
System.out.println("3 - Buchstaben sortieren");
}
int i = Integer.parseInt(eingabe.readLine());
switch(i) {
case 1:
System.out.println("Nach welchem Buchstaben wollen Sie suchen?");
buchstabe = eingabe.readLine();
int position = line.indexOf(buchstabe);
position++;
System.out.println("Der Buchstabe befindet sich an Position: " + position +"\n");
break;
case 2: System.out.println ("Spiegelschrift:\n\n");
String umgekehrt = new String ();
for (int j = line.length()-1 ;j>=0; j--){
umgekehrt += line.charAt(j);
}
System.out.println("Das Wort " + line + " lautet in Spiegelschrift : " + umgekehrt + "\n");
break;
case 3:
char[] buchstaben = line.toCharArray();
String wortSortiert = Testklasse.bubbleSort(buchstaben);
System.out.println(wortSortiert);
break;
case 4: System.out.println("\n\n\nEnde!!!");
break;
default: System.out.println("ungueltige Auswahl getroffen");
}
//}while(i!=4);
}
public static void Testklasse {
public static int compareChars(char c1, char c2) {
return (c1 - c2);
}
public static String bubbleSort(char[] buchstaben){
int i;
char tmp;
boolean done;
char[] r = buchstaben;
do{
done = true;
for(i=0; i<r.length-1 ; i++){
if (compareChars(r[i], r[i+1]) > 0){
tmp= r[i];
r[i]=r[i+1];
r[i+1]=tmp;
done= false ;
}
}
}while(!done);
return new String(r);
}
}
}
du darfst nicht 2 public klassen in dieselbe datei schreiben.
besser ist, jede klasse in eine datei..
[edit]
vergiss was da steht.
du hast die Testklasse zu einer Methode machen wollen, das geht so nicht.
was du brauchst sind 2 datein mit jeweils einer der klassen.
aus deiner klasse Menue kannst einfach du Testklasse.bubblesort aufrufen..