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.
Das ist keine gültige Syntax, und falls source ein String sein soll, wird aus dem String gelesen (nicht aus der Datei). Um aus einer Datei zu lesen, kannst Du ein File-Objekt übergeben.
Du erzeugst einfach eine Zufallszahl zwischen 0 und der Länge der Liste (excl.) und verwendest diese als Index.
Java:
public String getRandomWord(List<String> wordList) {
int index = (int)(Math.random() * wordList.size());
return wordList.get(index);
}
oder mit java.util.Random:
Java:
private Random rand = new Random();
public String getRandomWord(List<String> wordList) {
int index = rand.nextInt(wordList.size());
return wordList.get(index);
}
Das ist keine gültige Syntax, und falls source ein String sein soll, wird aus dem String gelesen (nicht aus der Datei). Um aus einer Datei zu lesen, kannst Du ein File-Objekt übergeben.
Du erzeugst einfach eine Zufallszahl zwischen 0 und der Länge der Liste (excl.) und verwendest diese als Index.
Java:
public String getRandomWord(List<String> wordList) {
int index = (int)(Math.random() * wordList.size());
return wordList.get(index);
}
oder mit java.util.Random:
Java:
private Random rand = new Random();
public String getRandomWord(List<String> wordList) {
int index = rand.nextInt(wordList.size());
return wordList.get(index);
}
Das "source:" fügt IntelliJ ein. Wäre natürlich schlecht, wenn er nicht aus der Liste liest...Andere Lösungen (hab schon geguckt) benutzen ein String-Array.
Danke schonmal. Deine Lösungen für das Zufallswort muss ich erstmal bei mir probieren, dann melde ich mich nochmal.
Das geht auch, dann musst Du aber im Voraus wissen, wie viele Wörter du (maximal) liest. Ansonsten müsstest Du zur Laufzeit ständig neue Arrays erstellen (das erledigt eben z. B. ArrayList für Dich).
Nochmal zum Code: Dein Scanner wird nicht den Inhalt der Datei liefern, sondern den übergebenen String!
Wenn Du aus der Datei lesen willst, kannst Du z. B. schreiben:
Java:
File woerterDatei = new File("C:\\Users\\Michael\\Documents\\WoerterListe");
try (Scanner sc = new Scanner(woerterDatei)) {
while (sc.hasNext()) {
System.out.println(sc.next()); // oder auch sc.nextLine(), je nachdem
}
}
Das mit dem "File" funktioniert auf jeden Fall schonmal gut. Danke dafür. Die Methoden zur Auswahl eines Random-Wortes hab ich auch mal versucht, aber bin gescheitert. Liegt es daran, dass Methoden immer außerhalb der Main-Methode deklariert werden müssen (d.h. darüber), aber innerhalb der Klasse?
Die Methoden zur Auswahl eines Random-Wortes hab ich auch mal versucht, aber bin gescheitert. Liegt es daran, dass Methoden immer außerhalb der Main-Methode deklariert werden müssen (d.h. darüber), aber innerhalb der Klasse?
Da wir nicht wissen, was Du genau probiert hast, ist es schwer zu sagen, aber ja: daran könnte es liegen. Das, was @mihe7 Dir an Code gegeben hat, ist für das Einfügen in einer Klasse gedacht und nicht als Inhalt einer Methode / der main Methode.
Ich hatte den Fehler gemacht, es zwar nicht in den Scope der Main-Methode zu schreiben, aber auch nicht in den Scope der Klasse. Deswegen bekam ich eine Fehlermeldung. Im Scope der Klasse und nur als Methodenaufruf in der Main-Methode klappt es ganz hervorragend.
Danke danke, das hab ich jetzt gelöst. Ich hab jedoch noch eine Frage und zwar, wie bekomme ich es hin, dass er die Buchstaben, die er in dem random Wort gefunden hat, in eine Gruppe Unterstriche schreibt, die so lang ist wie das random Wort.
Also erstmal: wie bekomme ich eine Anzahl von Unterstrichen, die genau so groß ist wie das Wort (mit Char Array?) und 2. wie kriege ich ihn dazu, die Unterstriche mit Buchstaben zu ersetzen, die genau an der Stelle stehen, wo diese Buchstaben im Originalwort sind?