Char-Array befüllen unter Java

Hallo:smile:

ich möchte in NetBeans ein kleines Hangman-Programm schreiben. Ich wähle ein zufälliges Wort aus einem String[] aus und will nun die einzelnen Buchstaben durch Striche ersetzen. Zwischen die Striche sollen allerdings Leerzeichen, damit man nicht nur einen großen Balken sieht. Ich habe folgendermaßen begonnen:

import java.util.*;
import java.util.Vector;
import java.io.*;
import javax.swing.*;

public class NewJFrame extends javax.swing.JFrame {

//variablen

public NewJFrame() {
initComponents();
}

String[] woerter={„hosenlatz“,„whatever“,„vogelmist“};

int n = (int) (Math.random()*2+1);

String ratewort=woerter[n];
String anzeigewort;
int laenge=ratewort.length();

char [] strichwort= new char[laenge+(laenge-1)];

Später, wenn man den entsprechenden Button drückt, um das erste wort auszusuchen und in Strichen in eine TextArea einzutragen, noch folgender Code:

for(int i=0;i

Hi,

Galileo hat hier ein Tutorial für ein Hangman-Spiel, siehs dir an vllt hilfts dir weiter.

http://openbook.galileocomputing.de/javainsel/javain…

lg

Hej,

sehe mir das gerne mal an.
Wäre aber von Vorteil, den kompletten Quellcode zu haben.
Ich kann jetzt hier auf Anhieb nichts sagen.
Bitte den Code entweder hier posten oder anderweitig zum Download bereitstellen, eventuell auch als Email.

Das Einzige, was ich auf Anhieb jetzt mal so sehe ist:
Das steht so da:

**if(i%2==0 || i==0){
strichwort[i]=’_’;
}
else strichwort[i]=’ ';

}**
Sollte das nicht so sein?

if(i%2==0 || i==0){
strichwort[i]=’_’;
}
else{
strichwort[i]=’ ';
}

Und dann wird da wohl irgendwo eine geschweifte Klammer zu wenig sein.
Torsten

Hallo,

war mein Fehler. Das mit der Klammer stimmt wohl so wie es ist.
Die ist ja von der FOR-Schleife.
ABER:
Oben definierst du ein Chararray mit:
new char[laenge+(laenge-1)]
Dann füllst du es mit:
**for(int i=0;i
Und fragst das Array mit folgendem Index ab:
int a= laenge+(laenge-1);

for(int j=0;j
Also mit laenge + laenge - 1 erzeugt.
Mit laenge gefüllt.
Und mit laenge + laenge - 1 ausgelesen.
Die Hälfte deines Arrays ist somit leer.
Daher die NullPointerException.
Ausserdem wird mit String.charAt(x) kein String gefüllt, sondern das Zeichen an Position x des Strings ausgelesen.
Besser wäre:

int a= laenge+(laenge-1);
anzeigewort = „“;
for(int j=0;j

Versuch mal ein bischen.
Hoffe das hilft dir auf den Weg.

Torsten**

Hey

Ich würde das so machen

Aus deinem String[] holst du nen String. Soweit hast du das ja schon. Bitte beachte das du mit leght immer einen Eintrag mehr hast als du beim Abfragen eingeben kannst(Abfrage startet bei 0!!!).

String Wort=„xxxxxx“;
int count=0;
for (char a: Wort.toCharArray()){

//Hier hast du nun alles was du brauchst
//Mit count kannst du nun deine Matheformel abarbeiten
//bitte beachte das count den ersten Buchstaben mit 0 //zählt.Das hat schon machen Programmierer umgebracht:smile:

count++;
}

Hallo,

int n = (int) (Math.random()*2+1);

schau dir lieber mal z.B. java.util.Random an und dort die Funktion nextInt(int n)

ALLERDINGS: ich bekomme andauernd Fehlermeldungen.

Exception in thread „AWT-EventQueue-0“
java.lang.NullPointerException

Da hast du irgendwo einen Fehler in der Steuerung der Benutzeroberfläche, d.h. Swing oder eben letztendlich AWT. Den dafür interessanten Teil hast du leider nicht mitgeschickt.

Kann mir jemand sagen, wie er es ändern würde? vielleicht
alles zu kompliziert gedacht?

Ja, irgendwie schon etwas kompliziert aber so haben wir alle mal angefangen :wink:.
Learning by Doing.

Tut mir leid, dass ich nicht mehr dazu sagen kann, bin derzeit auch zeitlich leider sehr eingeschränkt.

Viele Grüße

Thomas

ich kann dir bei dem Problem leider nicht helfen.
Alex

Hallo,

Leider kann ich da nicht weiterhelfen, mein Java ist eingerostet. (werde es jetzt aus meinen Wissensgebieten entfernen).

Schöne Grüße, Robert

Hallo,

Entschuldigung, dass ich erst heute antworte.
Für die Analyse der Fehlermeldung wäre es noch hilfreich zu wissen, in welcher Zeile die Exception ausgelöst wird.
Denn jeder nichtprimitve Datentyp (also insbesondere auch String) kann eine solche Fehlermeldung werfen.

Wenn du mir sagst, in welcher Zeile sich der Fehler befindet, werde ich morgen Abend nochmal drüberschauen und dir dann meine Idee mitteilen, sobald ich eine habe.

noch eine Frage: was machst du mit der Rückgabe von

anzeigewort.charAt(j);

  • wohin wird das gespeichert? Evtl. liegt hier der Fehler?

Gruß

tincian

servus,

ich an deiner stelle würde anfangen dein programm durchzudebuggen. setze einen haltepunkt und ge es schritt für schritt durch.
die nullpointer exception kommt daher das eine variable nicht initialisiert ist, sprich den wert null hat. wenn du dann verscuht eine funktion aufzurufen gibts eben diese meldung. oder z.b. wenn du versuchst auf ein leeres array zuzugreifen.

grüße
matze