Hallo
Ich habe die Aufgabe, ein Wörterraten zu programmieren.
Es soll über Kommandozeilenparameter das zu erratende Wort und die maximale Anzahl der Versuche übergeben werden.
Sobald mehr als ein Zeichen eingegeben wird, soll das gleich mit dem Wort abgeglichen werden.
Mein Programm sieht derzeit so aus:
[CODE lang="java" title="Test.java"]import java.io.*;
import java.util.*;
public class Woerterraten {
public static void main(String[] args) {
Scanner t = new Scanner(System.in);
char verwendet[];
String wort = args[0];
String ergebnis = "_";
int i = Integer.parseInt(args[0]);
String in;
char input = 0;
boolean[] richtig = new boolean[wort.length()];
char[] name = wort.toCharArray();//new char[wort.length()];
boolean stop = false;
char[] vorkommen = new char;
int vollstaendig=0;
while (i > 0 || stop == true) {
in = t.nextLine();
// Wenn Wort nur 1 Zeichen, wandle in char
if (in.length() == 1) {
input = in.charAt(0);
for (int j = 0; j < i; j++) {
if (input == vorkommen[j]) {
System.out.println("Buchstabe kam bereits vor");
}
}
name[wort.length() - 1] = input;
for (int j = 0; j < wort.length(); j++) {
if (wort.charAt(j) == input) {
richtig[j] = true;
}
}
if (i > 1) {
for (int j = 0; j < wort.length(); j++) {
if (richtig[j]) {
System.out.print(wort.charAt(j));
} else {
System.out.print("_");
}
}
}
} else if (i == 1) {
System.out.println("Maximale Anzahl an Versuchen ueberschritten");
} else if (i == 2) {
System.out.println("Versuche fuer " + wort);
} else if (in.equals(wort)) {
//System.out.println(in + " "+ wort);
System.out.println(i + " Versuche für " + wort);
stop = true;
} else {
System.out.println("Falsches Wort");
}
//if(richtig[j] = true){
for (int j2 = 0; j2 > richtig.length; j2--) {
vollstaendig=0;
if (richtig[j2]==true) {
vollstaendig++;
}
if (vollstaendig == 0) {
System.out.println(i + "Versuche für " + wort);
stop = true;
}
System.out.println(richtig[j2]);
}
i = i - 1;
}
}
}[/CODE]
Leider sind die Ausgaben nicht ganz richtig.
Was mache ich falsch?
Die Ausgabe soll wie in der Datei aussehen (links = input, rechts = erwarteter output).
Oben links kann man die Eingabe sehen: objektorientierung ist das Wort und man hat 13 Versuche.
Ich habe die Aufgabe, ein Wörterraten zu programmieren.
Es soll über Kommandozeilenparameter das zu erratende Wort und die maximale Anzahl der Versuche übergeben werden.
Sobald mehr als ein Zeichen eingegeben wird, soll das gleich mit dem Wort abgeglichen werden.
Mein Programm sieht derzeit so aus:
[CODE lang="java" title="Test.java"]import java.io.*;
import java.util.*;
public class Woerterraten {
public static void main(String[] args) {
Scanner t = new Scanner(System.in);
char verwendet[];
String wort = args[0];
String ergebnis = "_";
int i = Integer.parseInt(args[0]);
String in;
char input = 0;
boolean[] richtig = new boolean[wort.length()];
char[] name = wort.toCharArray();//new char[wort.length()];
boolean stop = false;
char[] vorkommen = new char;
int vollstaendig=0;
while (i > 0 || stop == true) {
in = t.nextLine();
// Wenn Wort nur 1 Zeichen, wandle in char
if (in.length() == 1) {
input = in.charAt(0);
for (int j = 0; j < i; j++) {
if (input == vorkommen[j]) {
System.out.println("Buchstabe kam bereits vor");
}
}
name[wort.length() - 1] = input;
for (int j = 0; j < wort.length(); j++) {
if (wort.charAt(j) == input) {
richtig[j] = true;
}
}
if (i > 1) {
for (int j = 0; j < wort.length(); j++) {
if (richtig[j]) {
System.out.print(wort.charAt(j));
} else {
System.out.print("_");
}
}
}
} else if (i == 1) {
System.out.println("Maximale Anzahl an Versuchen ueberschritten");
} else if (i == 2) {
System.out.println("Versuche fuer " + wort);
} else if (in.equals(wort)) {
//System.out.println(in + " "+ wort);
System.out.println(i + " Versuche für " + wort);
stop = true;
} else {
System.out.println("Falsches Wort");
}
//if(richtig[j] = true){
for (int j2 = 0; j2 > richtig.length; j2--) {
vollstaendig=0;
if (richtig[j2]==true) {
vollstaendig++;
}
if (vollstaendig == 0) {
System.out.println(i + "Versuche für " + wort);
stop = true;
}
System.out.println(richtig[j2]);
}
i = i - 1;
}
}
}[/CODE]
Leider sind die Ausgaben nicht ganz richtig.
Was mache ich falsch?
Die Ausgabe soll wie in der Datei aussehen (links = input, rechts = erwarteter output).
Oben links kann man die Eingabe sehen: objektorientierung ist das Wort und man hat 13 Versuche.