Int in TXT speichern und abrufen

  • Antworten:19
  • Bentwortet
Gurkey
  • Forum-Beiträge: 9

13.05.2018, 19:20:45 via Website

Guten Tag Leute ,

Ich bin neu in dem Bereich Java Codierung

Habe seit langer Zeit samp gescriptet und daher ein wenig Kenntnis darin

Meine Problem oder eher meine Frage ist es

Kann ich mehre int oder Double in eine TXT speichern und gezielt wider laden ?

Zb
1.Weizen =2
2.Mais =5

In der txt würde wenn nur
2
5

Stehen

Würde denn irgendwie sagen wollen lese jetzt Zeile 2 aus und setzte die 5 dann in Mais

Hoffe ihr könnt mir helfen

Kommentieren
Beste Antwort
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.05.2018, 19:39:03 via Website

Hallo Gurkey,
Herzlich wilkommen hier im Forum :)



Wenn du in Android unter Java nur Werte zwischenspeichern willst, dann würde ich dir Raten die SahredPreferences zu nehemen. Ist deutlich einficher als mit einem Textfile.

Aber zu deiner Frage:
1. Textfile in string lesen z.b. über einem InputStream o.ä.
2. String split an \r\n oder besser System.getProperty("line.separator");
3. Dein String Array sind die einzelen Zeilen d.h. mit Integer.parse(myLines[0].trim()); bekommst du z.b. den ersten Integer wert.

Wie gesagt, mit SharedPrefs ist das einfacher ;)

— geändert am 13.05.2018, 19:39:30

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
swa00Gurkey
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

13.05.2018, 19:52:00 via Website

Hallo damit das lesen von Pascal auch funktioniert musst du die Zahlen eigentlich Zeichen auch mit dem Separater speichern.

Aber mit SharedPrefs ist wirklich einfacher.

Hilfreich?
swa00
Kommentieren
Gurkey
  • Forum-Beiträge: 9

13.05.2018, 19:54:36 via Website

Okay danke schonmal :)
Ich habe mir heute schonmal ein Video zu shareprerferences angesehen und das kam mir ganz schön umständlich vor

Dazu muss ich ja in jeder activity alles definieren und
Wie klappt das genau

Kann man immer nur einen speichern oder wie klappt das genau
Oder könnte ich mit Art[0] und Art[1]
Arbeiten das Art 0 Weizen ist und Art 1 Mais ?

So könnte ich denn zum speichern auch eine Schleife nehmen und alle Speicher durchlaufen lassen

Mfg

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

13.05.2018, 20:02:38 via Website

Es werden sogenante key wete Paare gespeichert.
Also für jeden key zb. Weizen und der Wert das kann ein int, Float, String ... sein.

Richtig für jeden key ein Wert.
Wie viele sollen es den werden?

LG J.

— geändert am 13.05.2018, 20:10:30

Hilfreich?
swa00
Kommentieren
Gurkey
  • Forum-Beiträge: 9

13.05.2018, 20:19:14 via Website

So locker an die 30 wenn nicht sogar mehr 🤔

Könnt ihr mir an einem kurzen Beispiel erklären wie ich es Speicher und lade ?

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.05.2018, 20:24:06 via Website

@Jockel: Wenn man einfach die Zeilen als Separator nimmt, dann passt das mit dem Line Separator \r\n wieder ;)

@TE:
Schau dir mal das an:
https://stackoverflow.com/a/14377185

Zu sahred Prefs:
https://www.journaldev.com/9412/android-shared-preferences-example-tutorial

und nein, wenn du dir da eine Klasse drum baust, musst du das nicht in jeder Activity coden, sondern nur über die geschiebene Klasse lesen. Ein Vorteil von OOP :)

— geändert am 13.05.2018, 20:26:30

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
swa00
Kommentieren
Gurkey
  • Forum-Beiträge: 9

13.05.2018, 20:32:24 via Website

und nein, wenn du dir da eine Klasse drum baust, musst du das nicht in jeder Activity coden, sondern nur über die geschiebene Klasse lesen. Ein Vorteil von OOP :)

Wie meinst das jetzt ?

😅

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.05.2018, 20:39:15 via App

Naja du baust dir da halt ne Klasse als Singleton drumrum:

 public class MyPreferences{

 private int weizenCount;

 private static MyPreferences instance;

 public static MyPreferences getInstance(){
 if(instance==null) instance = new MyPreferences();

 return instance;
 }

 public MyPreferences (){
 // hier Datei oder SharedPrefs lesen und in private Variablen speichern.
 }

 public int getWeizenCount(){
 return this.weizenCount;
 }

 }

und aus deine. Activities brauchst du dann nur MyPreferences.getInstance(). getWeizenCount () aufrufen um die Integer zu lesen.
Fürs Schreiben die entsprechenden Methoden in der oberen Klasse hinzufügen.

Allerdings solltest du anfangen, die Grunlafen der Objektorientierten Programmierung zu lernen.
Erst dann wirst du dich in Java mit Android zurechtfinden.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
swa00Gurkey
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

13.05.2018, 20:50:38 via Website

@Pascal

@Jockel: Wenn man einfach die Zeilen als Separator nimmt, dann passt das mit dem Line Separator \r\n wieder

Mir ist das klar wollte nur sicher gehen das er eine Trennung egal welche zwischen den werten macht und nicht alles hintereinander in den Stream schreibt. Sonst kann er es beim lesen nicht trennen.
Mehr wolte ich nicht.

— geändert am 13.05.2018, 20:51:04

Hilfreich?
swa00
Kommentieren
Gurkey
  • Forum-Beiträge: 9

13.05.2018, 21:21:37 via Website

Okay
Also für mich zum Verständnis pack ich das was du mir geschrieben hast auf die erste Seite und kann es denn später auf einer anderen Seite wieder abrufen ?

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.05.2018, 21:55:31 via App

Was meinst du in diesem Zusammenhang mit "Seite"?
Der Begriff ist nicht gängig in der Entwicklung

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
swa00
Kommentieren
Gurkey
  • Forum-Beiträge: 9

13.05.2018, 22:05:31 via Website

Ich denke aktivity ist der richtige Begriff 😅

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

13.05.2018, 22:14:21 via Website

Also für mich zum Verständnis pack ich das was du mir geschrieben hast auf die erste Seite und kann es denn später auf einer anderen Seite wieder abrufen ?

Ja du kannst es in einer Activity speichern und auch in einer anderen Activity wieder lesen.
Der Code enthält aber noch keine Methode zum speichern.
Darauf hat Pascal aber auch hingewiesen.

Hilfreich?
Kommentieren
Gurkey
  • Forum-Beiträge: 9

13.05.2018, 22:47:36 via Website

Ja okay ne war jetzt nur für mich zum Verständnis :)

Ich Danke euch schon mal das ihr mich unterstützt 😉
Finde es klasse das ihr anderen helft 👍🏻
Auch wenn es nerven kann wenn man jemadem helfen will der nicht wirklich viel Ahnung hat 😅

Aber ich will es ja lernen und gebe mir Mühe das umzusetzen was ihr mir als tip gebt 😉

Hilfreich?
Kommentieren
Gurkey
  • Forum-Beiträge: 9

14.05.2018, 07:39:59 via Website

Okay also müsste die Geschichte

private int weizenCount;

private static MyPreferences instance;

public static MyPreferences getInstance(){
if(instance==null) instance = new MyPreferences();

return instance;
}

public MyPreferences (){
// hier Datei oder SharedPrefs lesen und in private Variablen speichern.
}

public int getWeizenCount(){
return this.weizenCount;
}

}

In das erste Layout

Und auf einem anderen Layout könnte ich dies laden oder speichern ?
Hoffe ihr könnt mir jetzt folgen 😅

Hilfreich?
Kommentieren
swa00
  • Forum-Beiträge: 3.704

14.05.2018, 07:54:28 via Website

Moin Jungs,

@Gurkey

Ich verfolge den Thread auch aufmerksam und die anderen Beiden geben sich ja Mühe , Dich
auf den richtigen Pfad zu bringen .
Auch wir haben alle angefangen, allerdings erlaube ich mir die Bemerkung, dass im Grunde genommen das Ganze hier ein Gefrickel gibt, von dem Du eigentlich nicht einmal die Hälfte richtig verstanden hast :-)

Es bringt dir nichts uns zu fragen , ob dein"Puzzle" so passt , ohne dass du die einzelnen Teile
nicht wirklich verstanden hast.
Dir fehlt es an einem ordentlichen Grundwissen - Vergleichbar mit einem Maurer, der nicht weis, wie man Zement und Wasser anmischt, aber ein Haus hochziehen möchte - Und ohne Vokabeln wirst Du niemals eine Fremdsprache beherrschen können. Das ist nun mal Fakt.

Ich kann Dir an dieser Stelle wirklich nur ans Herz legen, erst den Grundstock zu lernen und dann
an Dinge wie SIngleton und Instanzen heranzugehen.
So wird das m.E. nichts und du wirst morgen wieder mit anderen BasisFragen aufschlagen.
.

Das Forum stellt keinen Lehrgang dar, sondern hilft , wenn man mal in eine Sackgasse geraten ist

— geändert am 14.05.2018, 08:18:42

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Jokel
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

14.05.2018, 08:57:21 via Website

Hi das was dir Pascal gegeben hat ist eine separate Klasse die auch in eine separate datei gehört. In der du nun auch noch die Speicher Methode sowie 30 Variablen die getter und steter Methoden für die Variablen schreiben musst.
Wie gesagt ist es für dich scheinbar sinnvoll mit einen Java Grundkurs zu beginnen.
Mal eine Frage hast du vorher schon mal in einer Sprache programmiert?

Hilfreich?
Kommentieren
Gurkey
  • Forum-Beiträge: 9

14.05.2018, 20:52:28 via Website

Ja bei samp
Ist glaube ich c++

Aber da hatte ich keine Layouts und es ist alles viel einfacher 😅

Hilfreich?
Kommentieren