String speichern?

4 Antworten

Jede Variable ist irgendwo gespeichert, das geht nicht anders!

Für einen String wird erst Speicherplatz reserviert und dann kann eine Eingaberoutine in diesen Speicherplatz was ablegen. Mit diesem Speicherplatz kann man dann später im Programm arbeiten.

Jetzt gibt es zwei gute Gründe warum das nicht reicht:

1)

Man muss den String bearbeiten, braucht aber das Original für andere/spätere Bearbeitungen. Hier muss man dann Kopien anlegen. Dazu reserviert man jeweils noch mal Speicherplatz der selben Länge (oder größer) und kopiert dann den String da rein. So kannst Du dann zur Bearbeitung Veränderungen machen ohne die Originaldaten zu verlieren.

Wie man mit Strings arbeitet bzw. diese kopiert kann man hier nachlesen: http://www.codeadventurer.de/?p=1689

2)

Der String muss "für immer" gespeichert werden, also auch nach Programmende bzw. Neustart des Computers weiter zur Verfügung stehen. Dazu muss man den in eine Datei schreiben. Hier wird die Datei entweder erzeugt mit nur dem String drin oder der String kann an eine bestehende Datei angehängt werden. Dabei muss man sich überlegen ob das benutzerspezifisch ist oder das Programm sich alle Strings, egal von welchem Benutzer merken soll. Das entscheidet ob man diese Datei in die "Eigene Dateien" des Benutzers legt oder in das Verzeichnis wo die EXE des Programms liegt so dass das Programm diese Datei immer hat, egal welcher Benutzer das Programm gestartet hat.

Dabei ist das Verwalten was wo in dieser Datei liegt die größte Herausforderung. Man muss sich irgendwie in der selben Datei oder anderen Datei merken an welcher Stelle die Strings liegen und wofür die gebraucht werden.

http://javatricks.de/tricks/string-in-datei-schreiben#:~:text=Um%20einen%20String%20in%20eine,write()%20.

Woher ich das weiß:Berufserfahrung
Ich versuch mich seit einem guten Monat an Java. Und hätte da zwischenzeitlich immer mal wieder Fragen ;)
Aktuell würde ich gerne wissen, wie ich einen String aus einer Benutzereingabe speichern kann?

Wenn du für eine derartig grundlegende Frage auf GF gehen musst, dann wirst du auch in Zukunft nur sehr wenig Fortschritte machen - und das macht dann wenig Spaß. Besorg dir ein Lehrbuch oder einen Kurs zu Java, der dich schrittweise durchführt (von reinem Youtube-Konsum würde ich abraten). Es gibt auch zahlreiche kostenlose Tutorials und Lernskripte im Netz.


JavaNoob489 
Fragesteller
 14.06.2021, 12:53

Ja, soll ja nur zum Spaß sein :)

0

Wenn es nur innerhalb derselben Programmausführung sein soll, dann brauchst Du einfach eine Variable vom Typ string (siehe Code in Antwort von Dultus). Diese musst Du dann eben immer dorthin übergeben, wo Du mit der Eingabe des Users arbeiten willst.

Wenn es persistent über mehrere Programmauftrufe hinweg gespeichert werden soll, müsstest Du die Eingabe des Benutzers z.B. in einer Textdatei speichern und beim Starten der Anwendung schauen, ob es diese Datei gibt und den Wert dann ggf. wieder einlesen.

Scanner sc= new Scanner(System.in);
String str = sc.nextLine();

Das wäre es.

LG

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting

JavaNoob489 
Fragesteller
 14.06.2021, 16:04

"Scanner" funktioniert nicht. Muss man da was importieren? Und wenn ja, gibt es auch ohne Import eine Möglichkeit?

0
ralphdieter  14.06.2021, 16:43
@Dultus, UserMod Light

Ohne import schreibt man eben java.util.Scanner(...)

Man muss nicht wegen einer einzelnen Funktion gleich eine komplette Bibliothek importieren.

0
JavaNoob489 
Fragesteller
 15.06.2021, 10:30

Hat Top geholfen.Hätte noch eine Frage ;) Wenn ich jetzt mehrere Wörter in der Konsole eingeben will und die alle in Strings Speichern will , wie kann man das machen? Würde jetzt eine Schleife machen, aber kann man bei der Erzeugung eines Strings dem jeweiligen Namen eine Zählvariable geben?

Beispiel: Ich gebe Otto ein und drücke enter, gebe Basti ein und drücke enter, gebe Susi ein und drücke Enter. Jetzt hätte ich gerne für jeden Namen einen String.

Oder kann man diese in ein array packen ? Aber geht dass auch, ohne dass ich vorher die array größe deklariere?.....so viele Fragen^^

PS: Ich forsche natürlich auch selber im Netz die ganze Zeit, aber das ist garnicht sooo einfach, wenn man sich noch nicht so auskennt.

0
Dultus, UserMod Light   15.06.2021, 10:37
@JavaNoob489

Bei Java bin ich leider ein wenig raus. Ich bin C# und C++ Entwickler. Die Syntax ist zwar fast die gleiche wie bei C# aber einige Dinge sind anders (wie dass man den String in Java groß schreibt).

Es wäre möglich eine Liste/Array zu erstellen, welchen du dann in jeder Schleifeniteration den String hinzufügst.

So könntest du dann mit einem foreach (string stritem in list) durch die Liste die Namen (be)nutzen.

1