Ein String in ein array einlesen?
Moin,
kann mir wer eine einfche Schleife verraten um ein Wort in ein array einzulesen. Z.B. das Wort "Kartoffel". [0]=K, [1]=A etc.......
Wie genau meinst du einlesen? Über die Konsole oder eine GUI?
In Eclipse
Das ist die IDE, das Werkzeug, um Programme zu erstellen. Meine Frage war, ob du die im Programm-Code eingeben willst, oder während der Laufzeit des Programmes abfragen willst.
Ich möchte das Wort in der Main Methode eingeben in einem Konstruktor
4 Antworten
char[] s = "Kartoffel".toCharArray();
Wenn du nur an die einzelnen Buchstaben kommen willst, ist
"Kartoffel".charAt(3)
vielleicht einfacher
Ok, zu wenig Infos von meiner Seite, sry. Also ich habe eine Klasse mit dem attribut "char Wort []" und einen Konstriktor Eingabe (char Wort){?}. Jetzt möchte ich gerne irgendwie , dass das eingegebene Wort in das attribut arry "WOrt" eingelesen wird.
String deinString = "Hallo!";
char[] ch = new char[deinString.length()];
for(int i = 0; i < deinString.length(); i++) {
ch[i] = deinString.charAt(i);
}
Zumindest kommt bei mir die Fehlermeldung :"The method charAT(int) is undefined for the type STring"
Java achtet, wie so einige Programmiersprachen, auf die Groß- und Kleinschreibung. Die Methode heißt charAt, nicht anders.
Danke, genau so hab ich es auch geschrieben. Allerdings geht das nur mit java.util. richtig? Gibt es auch eine Möglichkeit ohne dies zu importieren?
Das obige Snippet kommt ohne Klassen aus dem java.util-Package aus.
public static void main(String[] args){
char[] chars = args[0].toCharArray();
}
Ich wollte es in einem Konstruktor aufrufen:
class Sortieren {
char Wort[];
Sortieren(String Wort) {
this.Wort = new char[Wort.length()];
for (int i = 0; i < Wort.length(); i++) {
this.Wort[i] = Wort.charAT(i);
}
Leider kommt da jetzt folgender Fehler:"The method charAT(int) is undefined for the type STring"
die Methode String#charAt steht nur mit Strings, nicht mit char Arrays, das, was du meinst, ist einfach die Ansprache eines bestimmten Objektes im Array.
Einfacher geht's mit String#toCharArray; ich habe mal beide Versionen hier reingepackt:
public class Sortieren {
public static void main(String[] args) {
new Sortieren("HELLO hallo");
}
private char[] zeichenkette1, zeichenkette2;
public Sortieren(String neuesWort) {
zeichenkette1 = neuesWort.toCharArray();
System.out.println("Mit String#toCharArray:");
for(int i = 0; i < zeichenkette1.length; i++) {
System.out.print(zeichenkette1[i]);
}
System.out.println("\nMit Initialisierung der einzelnen Indexe:");
zeichenkette2 = new char[neuesWort.length()];
for (int i = 0; i < neuesWort.length(); i++) {
zeichenkette2[i] = neuesWort.charAt(i);
}
for(int i = 0; i < zeichenkette1.length; i++) {
System.out.print(zeichenkette2[i]);
}
}
}
Bei C# bzw. .NET:
var myArray = "abc".ToArray();
Bei allen anderen Sprachen:
Erstell ein Array mit der Länge des Strings und gehe dann mit einer for-Schleife Zeichen für Zeichen durch diesen String und setze die Zeichen in das Array.
Viele Sprachen/Frameworks dürften aber ähnliche Methoden haben, wie das .NET-Framework bei C#.
PS für Java:
Convert a String to Character array in Java - GeeksforGeeks
Hat mich mehr Arbeit gekostet, diesen Satz zu schreiben, als den Link zu finden.
Wo liegt hier der Fehler?
class Sortieren {
char Wort[];
Sortieren(String Wort) {
this.Wort = new char[Wort.length()];
for (int i = 0; i < Wort.length(); i++) {
this.Wort[i] = Wort.charAT(i);
}
Ich beantworte keine "Wo ist der Fehler?"-Fragen ohne vollständige Fehlermeldung.
Top-Antwort (schon, als sie sich nur auf C#/.NET bezog). Die Lösung ist, sich die Dokumentation der String-Klasse und derer Methoden etc. anzusehen.
Oder einfach eine Suchmaschine seiner Wahl zu benutzen :D
Google sagt, es gibt zu "java string to array" ganze 71 Millionen Treffer.
Da dürften auch ein/zwei Lösungen zu dieser Frage sein, die ich schon öfter gelesen habe, als ich zählen kann.
PS:
Im Falle von C# bzw. .NET ist es nicht mal die string-Klasse.
Stattdessen ist es eine LINQ-Methode, ein string zählt als Auflistung von Zeichen, deshalb funktionieren auch alle LINQ-Methoden wie ToArray.
Streng genommen war die Ausgangsfrage ausdrücklich nach einer Schleife. Aber auch dazu schaut man in die API-Doku, um herauszufinden, dass die String-Klasse eine Methode charAt() besitzt.
Stimmt :D
Ich hab die Frage schon so oft gelesen, dass ich gar nicht mehr richtig lese ...
sich die Dokumentation der String-Klasse ansehen
Im Prinzip hast du Recht. Aber die Frage ist so grundlegend, dass sie darauf schließen lässt, dass der Frager mit der Doku überfordert wäre. Wenn man nicht weiß, wonach man suchen soll, findet man es nicht.
Bei LINQ kann ich nicht mitreden. In Java ist String direkt von Object abgeleitet, und implementiert nur sehr wenige Interfaces, wenn ich es richtig sehe. Ein Iteratorkonzept kann ich da auf den ersten Blick jedenfalls nicht entdecken. https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html
Stimme zu, die Antwort ist etwas weltfremd. Ich mache allerdings gerne Andeutungen, wie man es auch machen könnte, vielleicht bleibt manchmal etwas hängen.
Wenn man die Doku nicht versteht, kann man auch online nach Lösungen suchen, wurde nur drölfzig Millionen mal beantwortet.
Oder man stellt hier seine Frage und beweist damit, dass man zu faul oder zu unfähig ist, selber zu recherchieren - beides denkbar ungünstig, wenn man programmieren (lernen) möchte.
LINQ ist meine ich auch ziemlich einzigartig, daher wundert es mich nicht, dass Java sowas nicht hat.
Deshalb stimmt deine Aussage ja auch nur im Fall von .NET nicht, bei den meisten anderen Alternativen aber schon ;)
Wobei man aber auch nur mit der String-Klasse auskommt: for-Schleife + Indexer
LINQ finde ich glaube ziemlich interessant. Nur habe ich mir noch nie die Zeit genommen, mich damit zu beschäftigen.
Zwischen new und char ist dir ein Leerzeichen abhanden gekommen.