Ein String in ein array einlesen?

ThoraxL  10.05.2021, 08:57

Wie genau meinst du einlesen? Über die Konsole oder eine GUI?

Seaman1986 
Fragesteller
 10.05.2021, 09:18

In Eclipse


ThoraxL  10.05.2021, 09:53

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.

Seaman1986 
Fragesteller
 10.05.2021, 10:40

Ich möchte das Wort in der Main Methode eingeben in einem Konstruktor

4 Antworten

Von Experte whgoffline bestätigt
char[] s = "Kartoffel".toCharArray();

Wenn du nur an die einzelnen Buchstaben kommen willst, ist

"Kartoffel".charAt(3)

vielleicht einfacher

Seaman1986 
Fragesteller
 10.05.2021, 09:29

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.

0
String deinString = "Hallo!";
        
char[] ch = new char[deinString.length()];
       
for(int i = 0; i < deinString.length(); i++) {            
  ch[i] = deinString.charAt(i);        
}
Woher ich das weiß:Studium / Ausbildung – Informatikstudent
Seaman1986 
Fragesteller
 10.05.2021, 09:42

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?

0
regex9  10.05.2021, 11:33
@Seaman1986

Das obige Snippet kommt ohne Klassen aus dem java.util-Package aus.

0
Seaman1986 
Fragesteller
 10.05.2021, 09:49

Zumindest kommt bei mir die Fehlermeldung :"The method charAT(int) is undefined for the type STring"

0
regex9  10.05.2021, 11:34
@Seaman1986

Java achtet, wie so einige Programmiersprachen, auf die Groß- und Kleinschreibung. Die Methode heißt charAt, nicht anders.

0
regex9  10.05.2021, 11:35

Zwischen new und char ist dir ein Leerzeichen abhanden gekommen.

1
public static void main(String[] args){
  char[] chars = args[0].toCharArray();
}
Seaman1986 
Fragesteller
 10.05.2021, 11:02

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"

0
ThoraxL  10.05.2021, 11:24
@Seaman1986

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]);
		}
	}


}
0

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.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler
whgoffline  10.05.2021, 08:53

Ich glaube, die Themen der Frage, lassen auf Java schließen.

0
wunschname0302  10.05.2021, 08:53

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.

0
Palladin007  10.05.2021, 08:55
@wunschname0302

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.

1
wunschname0302  10.05.2021, 08:58
@Palladin007

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.

0
Palladin007  10.05.2021, 08:59
@wunschname0302

Stimmt :D

Ich hab die Frage schon so oft gelesen, dass ich gar nicht mehr richtig lese ...

1
Schachpapa  10.05.2021, 09:04
@wunschname0302
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.

1
wunschname0302  10.05.2021, 09:09
@Schachpapa

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.

0
Palladin007  10.05.2021, 09:24
@Schachpapa

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.

0
Palladin007  10.05.2021, 09:25
@wunschname0302

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

0
wunschname0302  10.05.2021, 09:31
@Palladin007

LINQ finde ich glaube ziemlich interessant. Nur habe ich mir noch nie die Zeit genommen, mich damit zu beschäftigen.

0
Seaman1986 
Fragesteller
 10.05.2021, 11:11

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);

      }

0
Palladin007  10.05.2021, 16:30
@Seaman1986

Ich beantworte keine "Wo ist der Fehler?"-Fragen ohne vollständige Fehlermeldung.

0