Wort in seine Buchstaben zerlegen

Status
Nicht offen für weitere Antworten.

Agent Smith

Mitglied
Hallo !


wie kann man ein Wort in seine Buchstaben "zerlegen" lassen, damit diese Buchstaben einzelnd bearbeitet werden können ? ???:L
Das soll wohl mit einem Sortier Algorithmus gehen. Aber ich weiß nicht welchen ich nehmen soll, es gibt so viele...
 

merlin2

Top Contributor
Du willst also ein Wort wie "Haus" in 'H', 'a', 'u', 's' zerlegen?
Code:
"Haus".toCharArray()
 

Agent Smith

Mitglied
Und wie mache ich das mit beliebigen Wörtern ?
Ich will erst mal ein Wort eingeben, dass wird als String umgewandelt und in einem label ausgegeben. So weit bin ich.
Dann soll dieses Wort in dessen Buchstaben zerlegt werden.
Und dann erstmal diese zerlegten Buchstaben getrennt durch ein Komma oder ein Leerzeichen wieder ausgeben.
 

Agent Smith

Mitglied
ich hab oben String = a; gesetzt.
Und dann a.toCharArray();
Aber wie gibt der das denn dann getrennt aus ? Wenn ich in nem neuen Label in der Klammer (""+a) mache passiert nichts.
 

Agent Smith

Mitglied
Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.lang.String;


public class f extends Applet
{
  TextField textField1 = new TextField();

 String a;
 Label label1 = new Label();
  Label label2 = new Label();
  public void paint(Graphics g)
  {

  }

  public f() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  private void jbInit() throws Exception {

    textField1.setBounds(new Rectangle(53, 64, 176, 26));
    textField1.addActionListener(new f_textField1_actionAdapter(this));
    this.setLayout(null);

    label1.setBounds(new Rectangle(52, 112, 197, 30));
    
    label2.setBounds(new Rectangle(48, 173, 188, 34));
    this.add(textField1, null);
    this.add(label1, null);
    this.add(label2, null);
  }

  void textField1_actionPerformed(ActionEvent e) {
   a = String.valueOf(textField1.getText());
   textField1.setText(""+a);
  label1.setText(""+a);
  
  "a".toCharArray();
  label2.setText(""+a);
  }

}

Von Zeile 42 bis 48.
 
G

Guest

Gast
:shock:
Code:
void textField1_actionPerformed(ActionEvent e) { 
   a = textField1.getText(); 
   label1.setText(a); 
   label2.setText(java.util.Arrays.toString(a.toCharArray())); 
}
 

Agent Smith

Mitglied
Der hat ein Problem mit "toString" , der sagt :

toString() in java.lang.Object kann auf (char[]) nicht angewendet werden

Ich hab dann oben noch java.lang.Object; eingegeben, aber das Problem bleibt.

Hä ups hab gar nicht gelesen , dass du nicht Merlin bist und gar nicht gepeilt, dass du n komplett anderen Code hast...also nehme ich diesen Post zurück..
 

merlin2

Top Contributor
Auf die Schnelle zusammengebastelt:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class WortInBuchstabenZerlegen extends JFrame {
  // Anfang Variablen
  JTextField jtf = new JTextField();
  JButton jbu = new JButton();
  JLabel jlb = new JLabel();
  // Ende Variablen

  public WortInBuchstabenZerlegen (String Title) {
    // Frame-Initialisierung
    super (Title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing (WindowEvent evt) {System.exit(0);}});
    setSize(300, 300);
    getContentPane().setLayout(new BorderLayout());

    // Anfang Komponenten

    getContentPane().add(jtf, BorderLayout.NORTH);
    jbu.setText("Zerlegen");
    getContentPane().add(jbu, BorderLayout.CENTER);
    jbu.addActionListener (new ActionListener () {
      public void actionPerformed (ActionEvent evt) {
        jbuActionPerformed (evt);}});

    getContentPane().add(jlb, BorderLayout.SOUTH);
    // Ende Komponenten

  }

  // Anfang Ereignisprozeduren
  public void jbuActionPerformed (ActionEvent evt) {
    jlb.setText(java.util.Arrays.toString(jtf.getText().toCharArray()));
  }
  // Ende Ereignisprozeduren

  public static void main (String args[]) {
    new WortInBuchstabenZerlegen("WortInBuchstabenZerlegen").setVisible(true); //show(); in setVisible(true); geändert.
  }
}
 

Agent Smith

Mitglied
@merlin2


eh cool...und wo genau zerlegt der die Wörter ? Das Programm ist komplett anders als meins...könnt ich denn nicht meins so umwandeln, dass es auch Wörter zerlegen kann ?
 

merlin2

Top Contributor
Natürlich kannst du auch dein Programm ändern. Aber da du es unvollständig gepostest hast (Klasse f_textField1_actionListener fehlt), habe ich lieber ein neues geschrieben.
Die Zerlegung findet in Zeile 36 statt und verwendet dieselbe Methode zur Zerlegung wie deins.
 

Agent Smith

Mitglied
Code:
class f_textField1_actionAdapter implements java.awt.event.ActionListener {
  f adaptee;

  f_textField1_actionAdapter(f adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.textField1_actionPerformed(e);
  }
}

hier ist der Rest. Ich dachte der wäre nicht notwendig....Soll ich also den Befehl von Zeile 36 in meins reinkopieren??
 

Agent Smith

Mitglied
Code:
class f_textField1_actionAdapter implements java.awt.event.ActionListener {
  fickdeinemutter adaptee;

  f_textField1_actionAdapter(f adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.textField1_actionPerformed(e);
  }
}

hier ist der Rest. Ich dachte der wäre nicht notwendig....Soll ich also den Befehl von Zeile 36 in meins reinkopieren??

Bei

Code:
(java.util.Arrays.toString(jtf.getText().toCharArray())

"java" sagt der "void" ist nicht erlaubt und bei toString " in java.lang.Object kann auf char[] nicht angewendet werden".


Anonymous hat gesagt.:
Agent Smith hat gesagt.:
Keine Ahnung. So wie ich das hab klappt es. Will nur die eingegebenen Wörter zerlegen.
Was kommt im DOS-Fenster, wenn du das hier ausführst?

java -version

1.6.0.0_3
 
G

Guest

Gast
Wie compilierst du das Programm?
Ich frage es, weil der Fehler darauf hindeutet, dass bei dir die java.util.Arrays.toString(char[]) anscheinend nicht
vorhanden ist. Dies ist aber der Fall, wenn man die Version kleiner als 1.5 verwendet oder den Compiler mit
entsprechenden Einstellungen aufruft.
 
G

Guest

Gast
Agent Smith hat gesagt.:
Na ja ich benutze normal den JBuilder. Und compiliere auch damit.
Und mit welchen Compiler und vor allem mit welchen Einstellungen wird dein Code compiliert?

Ich vermute hier liegt das Problem. Du hast irgendeine Einstellung im JBuilder (ob es per Default so war oder nicht),
die 1.4.x Code erwartet. Schau doch mal in den Einstellungen nach, was verwendet wird und mit welchen Einstellungen.
 
G

Guest

Gast
JBuilder habe ich schon seit Jahren nicht mehr verwendet, aber schau doch mal unter
Project->Project Properties->... oder Tools->Preferences, wie auch immer es dort heisst.
 

Agent Smith

Mitglied
Da steht bei JDK : java version 1.4.2_01-b06

Unter Projekt Eigenschaften , dann Erzeugen sind folgende Sachen aufgelistet, die mit x markierten Einstellungen sind
bei mir angehakt:


x Vor Compilieren automatisch speichern
Projekt vor dem Erzeugen aktualisieren
x Quelltext im Ausgabepfad generieren
Erzeugen bei Fehler automatisch abbrechen

Unter Erzeugen-Java steht:

Compiler : Borland Make
Debug Option : Informationen über Quelle, Zeile und Variable
Ziel VM: Java 2 SDK, v 1.2 und höher

Weitere Compiler-Optionen

x Warnungen anzeigen
x Ablehnung anzeigen
Schlüsselwort assert aktivieren
x Ausgabeverzeichnis synchronisieren
 
G

Guest

Gast
Installieren und in JBuilder als Compiler einstellen, würde ich sagen.
 

Agent Smith

Mitglied
Also der hat das runtergeladen ,aber ich keinen Plan wo das ist.....und wie stellt man das in den JBuilder ein ? Muss mal suchen...der das mit nem Javaprog wo "Ready to download" oder so draufsteht runtergeladen.


Ok habs installiert, und der meint, dass das schon drauf ist. Wie bring ich das denn in den JBuilder rein ?

Der Ordner jdk1.6.0_03 steht hier bereit. Soll ich den einfach durch den alten mit jdk1.4 ersetzen ? Frag lieber nach...

Als hab es versucht zu ersetzen. Dann wollte der den jBuilder nicht starten. Habs rückgängig gemacht. Dann war wieder alles ok.
Dann hab ich sone jdk library Datei von 1.4 durch eine jdk library Datei von 1.6 ersetzt, danach wollte der gar nicht mehr compilieren. Habs dann wieder rückgängig gemacht, danach wieder alles ok. Jetzt weiß ich nicht weiter...
 
G

Guest

Gast
Dann hast du irgendeine archaische Version von JBuilder, die mit JDK > 1.4.x nicht umgehen kann.

Ersetze das hier
Code:
(java.util.Arrays.toString(jtf.getText().toCharArray())

durch das hier
Code:
(charArrayToString(jtf.getText().toCharArray()))

private String charArrayToString(char[] c)
{
   StringBuffer b = new StringBuffer(c.length);
   b.append("[");
   for(int i=0; i<c.length; i++)
   {
      if(i > 0)
      {
         b.append(", ");
      }
      b.append(c);
   }
   b.append("]");
   return b.toString();
}
oder verwende Eclipse, statt JBuilder. Ist sowieso besser und kostet nix.

Siehe: http://www.eclipse.org/downloads/
 

Agent Smith

Mitglied
Also...ich hab jetzt was ganz anderes ausprobiert...:

Code:
void textField1_actionPerformed(ActionEvent e) {
        a = String.valueOf(textField1.getText()); //übernimmt den Text
        label1.setText(""+a);                     //gibt den eingegebenen Text aus
        i = a.length();                           //ermittelt die Länge der Eingabe
        label2.setText(""+i);                     //gibt die Anzahl der Buchstaben an              
        char[] zeichen= new char[i];              // Array-Feld erstellt
        char a = zeichen[0];                      //soll den ersten Buchstaben packen
        label3.setText(""+a);                     //soll den ersten Buchstaben zeigen

Nur...der erste Buchstabe ist für den ein Rechteck...(egal der wievielte Buchstabe...das macht der bei allen Indices..). Der gibt so'n kleines Rechteck aus, so wie wenn der ein Zeichen nicht kennt.
 

Murray

Top Contributor
Bei der Deklaration von zeichen wird das Array zwar angelegt, aber den einzelnen Zeichen wird kein Inhalt zugewiesen. Daher haben alle Zeichen den Wert (char)0, was kein druckbares Zeichen ist und daher bei der Ausgabe im GUI zu diesem kleinen Quadrat führt.
Vielleicht solltest du an der Steller besser
Code:
char[] zeichen = a.toCharArray();
schreiben.

Und was bezweckst du damit:
Code:
a = String.valueOf(textField1.getText());

Eigentlich sollte
Code:
a = textField1.getText();
doch reichen.
 

L-ectron-X

Gesperrter Benutzer
@merlin2: Falls es noch nicht zur Sprache kam, hier noch ein kleiner Hinweis:
Die show()-Methode ist deprecated, es sollte nur noch setVisible(true) verwendet werden.
 

Agent Smith

Mitglied
Aber wie mache ich das, dass der jeden einzelnen Buchstaben ausgibt ? Ich habe jetzt eine For-schleife reingepackt. Jetzt zeigt der den letzten Buchstaben an.

Code:
 void textField1_actionPerformed(ActionEvent e) {
        a = textField1.getText();
        label1.setText(""+a);
        i = a.length();
        label2.setText(""+i);
        char[] zeichen = a.toCharArray();
       for (int k=0; k<i;k++)
       {
         char a = zeichen[k];                
         label3.setText("" + a);                //gibt den letzten Buchstaben aus
         
       }

  }
 

Murray

Top Contributor
Du gibst in der Schleife nacheinander alle Buchstaben aus, wobei immer der zuletzt gesetzte den alten Inhalt überschreibt - so bleibt am Ende natürlich nur der letzte stehen.
 

merlin2

Top Contributor
L-ectron-X hat gesagt.:
@merlin2: Falls es noch nicht zur Sprache kam, hier noch ein kleiner Hinweis:
Die show()-Methode ist deprecated, es sollte nur noch setVisible(true) verwendet werden.
Das weiß ich, trotzdem danke für den Hinweis. :)
Da ich die GUI aber nicht von Hand erstellt habe, sondern ein Werkzeug benutzt habe, das leider show(); verwendet, habe ich vergessen, das in setVisible(true); zu ändern. :oops:
Ich ändere den Code jetzt.
 

JPKI

Top Contributor
@Agent Smith: Schreib folgendes in Zeile 11 deines Codes:
Code:
label3.setText(label3.getText().concat(a));
 

Agent Smith

Mitglied
Der sagt contact oder concat kann auf char nicht angewendet werden.
Außerdem habe ich vor, dann auf jeden einzelnen Buchsteiben zugreifen zu können... :?
Ich hab noch ne Methode reingepackt, damit die einzelnen Buchstaben nacheinander nach ungefähr einer Sekunde ausgegeben werden.
Und wenn man ein neues Wort eingeben will, löscht die alte Ausgabe nicht und hängt das Neue dran...(naja das ist nicht so tragisch, weil ich jetzt einfach ein Button eingesetzt hab, der den Inhalt vom Label wieder löscht..)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
buchfrau Anagram für beliebiges Wort Allgemeine Java-Themen 2
Drachenbauer Wie kann ich das Wort "concrete" in einem String durch ein anderes Wort ersetzen lassen? Allgemeine Java-Themen 5
The Pi Wie oft wird ein Buchstabe in einem Wort wiederholt? Allgemeine Java-Themen 16
4a61766120617274697374 PDF iText Wort Koordinaten auslesen Allgemeine Java-Themen 1
T Textarea nach nur 1 wort durchsuchen Allgemeine Java-Themen 3
D Regex: Komplettes Wort bekommen Allgemeine Java-Themen 3
M Methode um ein Wort raus zu schneiden? Allgemeine Java-Themen 3
J Doppelte Buchstaben löschen - letztes Wort macht er nicht Allgemeine Java-Themen 2
H Scanner soll einen Inputredirect einlesen, liest aber nicht jedes Wort ein. Allgemeine Java-Themen 3
B Gesplittetes Wort zusammenfügen Allgemeine Java-Themen 7
M Ein bestimmtes Wort in einem Text zählen (String in String) Allgemeine Java-Themen 9
D Wort in Text mit >100.000 Wörter finden Allgemeine Java-Themen 7
F Char-Array nach einem Wort durchsuchen! Allgemeine Java-Themen 11
G Wort am Bildschirm -- Koordinaten suchen Allgemeine Java-Themen 2
D readChar; wort abspeichern :( Allgemeine Java-Themen 5
E Wort kodieren mit bit shifting? Allgemeine Java-Themen 6
T bestimmtes wort aus string lesen Allgemeine Java-Themen 12
flashfactor Java und Windows seine Lokalen Gruppen incl. AD Allgemeine Java-Themen 4
Luma String in seine Buchstaben zerlegen? Allgemeine Java-Themen 3
P Woher weiß ein Programm wo seine Ressourcen sind? Allgemeine Java-Themen 4
kodela Gemittelte Ausgabe von Buchstaben Allgemeine Java-Themen 11
W Russische UND lateinische Buchstaben Allgemeine Java-Themen 19
Kingamadeus2000 Alle mehrfach vorkommenden Buchstaben rekursiv aus einem String entfernen. Allgemeine Java-Themen 6
parrot Gleiche Buchstaben Aufage Allgemeine Java-Themen 40
F In String 2 Buchstaben vertauschen Allgemeine Java-Themen 2
F Zurnung nach Buchstaben und deren Prüfung Allgemeine Java-Themen 9
Tacofan Hangman so viele Labels wie Buchstaben Allgemeine Java-Themen 5
L Menge der Buchstaben eines Textes zählen Allgemeine Java-Themen 3
KaffeeFan Methoden replace alle Buchstaben Allgemeine Java-Themen 3
P Methoden Häufigkeistverteilung von Buchstaben Allgemeine Java-Themen 2
I Eclipse API zur Buchstaben/Zeichensatzumwandlung Allgemeine Java-Themen 1
L Suchvorschläge beim eingeben einzelner Buchstaben Allgemeine Java-Themen 3
S Char-index aller Buchstaben..? Allgemeine Java-Themen 3
S Entfernen von allen Nicht-Buchstaben chars aus einem String ohne Regex..? Allgemeine Java-Themen 10
C Buchstaben, die in zwei Wörtern vorkommen Allgemeine Java-Themen 13
P Unicode-Problem: Griechische Buchstaben Allgemeine Java-Themen 11
T Logische Abfolge von buchstaben kombinationen Allgemeine Java-Themen 12
G Buchstaben in umkekehrter Reihenfolge ausgeben Allgemeine Java-Themen 4
S Methode zum Zählen von Buchstaben in Strings gesucht Allgemeine Java-Themen 11
E Spezielle Buchstaben darstellen? Allgemeine Java-Themen 7
J Java - 4-Buchstaben-Programm. Hilfe. ich hänge fest Allgemeine Java-Themen 7
Luma Buchstaben "umrechnen" in HEX-, DEC- und BIN-Forma Allgemeine Java-Themen 2
G Methode, die Buchstaben in Zahlen umwandelt? Allgemeine Java-Themen 13
M Buchstaben anordnen / Wortliste Allgemeine Java-Themen 2
I Suche Methode: Buchstaben in ASCII umwandelt Allgemeine Java-Themen 2
H Kann keine Zahlen von Buchstaben unterscheiden Allgemeine Java-Themen 4
A Buchstaben zählen Allgemeine Java-Themen 5

Ähnliche Java Themen


Oben