| 

.NET C# Java Javascript Exception

1
Dies ist mein Versuch, die Eingabe über die BlueJ Konsole erst in Listen und dann in einem Array zu speichern.

Bis jetzt hatte ich keinen Erfolg.
Keine Syntax Fehler, aber das Programm funktioniert noch nicht.

Für Anregungen und Ratschläge wäre ich sehr dankbar.


import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.List;
import java.util.ArrayList;
/**
* Write a description of class LoeffelSprache here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class LoeffelSprache
{




public LoeffelSprache()
{

}


public void uebersetzung ()
{
System.out.println("Bitte gib ein Wort ein");
Scanner sc = new Scanner(System.in);
String word= sc.next();

List<String> list1 = new ArrayList<String>();




while (sc.hasNext()) {
sc.next();
list1.add(word);

}
String [] namen = new String [list1.size()];
namen=list1.toArray(namen);


}

}
News:
22.02.2017
larifari89 1 1 2
3 Antworten
1
Sorry, ich hatte vergessen, dass Java manchmal sehr pingelig mit den Typen ist.

namen = list1.toArray(namen);


muss wohl geschrieben werden, damit er einen Hinweis auf den Zieltyp bekommt (Standard ist ein Objektarray).

Gibt es einen Grund, warum Scanner() verwendet wird und nicht die IO-Funktionen?
Wenn Sie nur die gesamte Eingabe (Zeichenkette) erhalten wollen, hätte folgender Code gereicht:

public void uebersetzung ()
{
System.out.println("Bitte gib ein Wort ein");
Scanner sc = new Scanner(System.in);
String word = sc.next();

List<String> list1 = new ArrayList<String>();
list1.add(word);

}


Allerdings wird dann eigentlich kein Array benötigt, da ja immer nur ein Ergebnis kommt.
24.02.2017
edvservice 1,4k 1 6
Wenn mannur die Eingabe braucht, also keine RegExp zur Analyse der Eingabe verwendet, kann man auch folgendes machen:
public void uebersetzung() {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.print("Gib ein Wort ein");
String eingabe = br.readLine();
System.out.println("Du hast " + eingabe + " eingegeben.");
}
Ein Scanner wird typischerweise nur verwendet, wenn ich eine Zeichenkette parsen möchte und daraus mehrere Werte erwarte (etwa an Wortgrenzen).
edvservice 26.02.2017
0
Hier meine Kommentare zu Ihrem Quellcode:

public void uebersetzung ()
{
System.out.println("Bitte gib ein Wort ein");
Scanner sc = new Scanner(System.in);
// Macht eigentlich keinen Sinn: Sie erhalten damit das erste Token wollen aber wahrscheinlich das letzte?
String word= sc.next();

List<String> list1 = new ArrayList<String>();

while (sc.hasNext()) {
// Eine Zuweisung der Variablen word muss schon sein, sonst wird nur das erste Token gespeichert!
word = sc.next();
list1.add(word);
}
}


Nun sollte auch folgendes funktionieren:
String [] namen = new String [list1.size()];
namen=list1.toArray();


Das Array sollte nun alle gefunden Zeichenkettentoken enthalten.
Ich hoffe, ich konnte Ihnen weiterhelfen.
23.02.2017
edvservice 1,4k 1 6
0
Ich habe Ihren Code in mein BlueJ übernommen , allerdings compiled er nicht mehr.
String [] namen = new String [list1.size()];
namen=list1.toArray();
Die Fehlermeldung lautet incompatible types:java.lang.Object[] cannot be converted to java.lang.String[].

Außerdem verstehe ich nicht wieso
System.out.println("Insert your Text here");
Scanner sc = new Scanner(System.in);
hier nur das erste Token gespeichert werden sollte. Ich dachte die gesamte Konsoleneingabe.
23.02.2017
larifari89 1 1 2

Stelle deine Java-Frage jetzt!