wie am besten 2D Array von String to Integer

belana

Neues Mitglied
Java:
        public static void main(String[] args) throws IOException {
            
             String [][] array = new String[10][2]; 
                        
            File datei = new File("test.csv");
               BufferedReader br = new BufferedReader(new FileReader(datei));
               String line = "";
               try {
                  
                   int i = 0;
                  
                   while ((line = br.readLine()) != null) {
                      
                   String [] column = line.split(",");
                   System.out.println(column[0] + " " + column[1]);
                  
                   i++;
                    }
               } catch (FileNotFoundException e) {
               e.printStackTrace();
          }
    }

Hallo an alle, als String-Array funktioniert bei mir bisher alles wunderbar, ich kann auch alles damit machen was ich möchte.
Mein Problem ist aber das ich es bisher nicht hinbekommen habe, die Datei direkt als Integer Array abzuspeichern oder das Array zu konvertiern.
Da ich gerne einige Rechnungen durchführen würde sowie mehrfache Änderungen der Array Werte bietet sich für mich leider das Integer.parseInt() was mit System.out super funktioniert gar nicht an.
 
Java:
package strings;

import java.io.*;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        storeStrings(new String[][]{{"eins", "zwei"}}, "blabla.txt");
        storeInts(new Integer[][]{{1, 2}, {3, 4}}, "zahlen.txt");
        System.out.println(Arrays.deepToString(readInts("zahlen.txt")));
        System.out.println(Arrays.deepToString(readStrings("blabla.txt")));
    }

    public static void storeStrings(String[][] strings, String fn) throws IOException {
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fn))) {
            oos.writeObject(strings);
            oos.flush();
        }
    }

    public static String[][] readStrings(String fn) throws IOException, ClassNotFoundException {
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fn))) {
            return (String[][]) ois.readObject();
        }
    }

    public static void storeInts(Integer[][] ints, String fn) throws IOException {
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fn))) {
            oos.writeObject(ints);
            oos.flush();
        }
    }

    public static Integer[][] readInts(String fn) throws IOException, ClassNotFoundException {
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fn))) {
            return (Integer[][]) ois.readObject();
        }
    }
}
 

KonradN

Super-Moderator
Mitarbeiter
Wenn du das Textfile / csv File mit Zahlen einlesen willst, dann geht das schon genau so, wie du es gemacht hast.
Du musst die Strings dann nur noch parsen. Das ginge mit Integer.parseInt. Sprich nach dem Split Aufruf auf jedem Element von columns ein solcher Aufruf.
 
Ooooooops, hab gar nicht gesehn das man die Methoden generisch hätte machen können...

Java:
package strings;

import java.io.*;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        store(new String[][]{{"eins", "zwei"}}, "blabla.txt");
        store(new Integer[][]{{1, 2}, {3, 4}}, "zahlen.txt");
        System.out.println(Arrays.deepToString(read("zahlen.txt")));
        System.out.println(Arrays.deepToString(read("blabla.txt")));
    }

    public static void store(Object objs, String fn) throws IOException {
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fn))) {
            oos.writeObject(objs);
            oos.flush();
        }
    }

    public static <T> T read(String fn) throws IOException, ClassNotFoundException {
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fn))) {
            return (T) ois.readObject();
        }
    }
}
 

belana

Neues Mitglied
Vielen Dank für eure Antworten.
Ich hab es jetzt tatsächlich hinbekommen.

Nämlich indem ich meine doppelt-verschachtelte For-Schleife die ich als Testausgabe für mein String-Array angelegt hatte abgeändert habe und mir dort alle Werte dann mit Integer.parseInt() umgeändert habe.
Sowie alle "Null" in "0" geändert habe.
 

KonradN

Super-Moderator
Mitarbeiter
Der von dem Konrad beschriebene Ansatz wird dadurch aber nicht richtiger.
Neuer Account von Tobias?

Wenn etwas falsch ist, dann bitte sagen, was genau falsch ist.

Derzeit ist es eher so, dass Dein Ansatz komplett an dem vorbei geht, was der TE möchte. Wenn man den Code in #1 anschaut, dann geht es dem TE um das Einlesen einer csv Datei. Und in dem Text geht es dem TE darum, "die Datei" (Ja, also wirklich genau diese, die er da hat!) so einzulesen, dass er die Zahlen als Zahlen hat.

Damit gehen Deine Vorschläge ganz offensichtlich komplett am Thema vorbei. Und der TE hat - wie er klar schreibt - mit dem Hinweis sein Problem lösen können.
 

KonradN

Super-Moderator
Mitarbeiter
Zum CSV parsen nimmt man eine Library und versucht nicht selber es schlecht/falsch umzusetzen, wie dein kläglicher Versuch gezeigt hat.
Das ist so doch Kindergarten-Niveau. Mein Ratschlag hat dem TE geholfen, weiter zu kommen. Dein Code ist
  • ohne jede Erklärung nicht mehr wie Müll
  • geht an den Anforderungen des TE komplett vorbei (aber das sind wir ja gewohnt von Dir, Tobias. Das Erfassen von selbst einfachen Texten ist nun einmal nicht Deine Stärke!)

Aber Deine Kritik hier ist wieder ein Zeichen absoluter Ignoranz:
a) Gerade am Anfang schreibt man einiges, für das es ggf. bessere Lösungen gibt. So werden z.B. auch abstrakte Datentypen implementiert.
b) Für eine Datei, in der scheinbar nur pro Zeile zwei Zahlen stehen (durch Komma getrennt) eine große Library einzubinden, ist einfach nur unnötig und etwas, das ich als schlichten Unsinn bezeichnen würde.

Und wenn jemand hier Libraries suchen sollte:

Aber so es hier wirklich bei diesen einfachen Dateien bleibt, würde ich da nichts in der Form nutzen.

Wenn es etwas komplexer wird, neige ich übrigens dazu, meine eigenen Klassen zu schreiben. Meine Erfahrung mit csv Dateien sind extrem schlecht (und liegen zum Glück schon einige Jahre zurück). Da gibt es nun einmal keinen klaren Standard bzw. das, was dann irgendwann mal als Standard festgelegt wurde, kam viele Jahre nach dem Produkte wie Microsoft Office das Format "missbraucht" haben. Mein Ratschlag ist, dass man csv Dateien nie zum Datenaustausch nutzt, weil schlicht zu fehleranfällig. XML, JSON oder sogar einfaches Excel sind da deutlich besser.
Das Ganze könnte man ggf. bei einem neuen Thread tiefer diskutieren - aber hier im Thread ist es schlicht Off Topic und jede Reaktion auf Tobias ist auch eine Reaktion zu viel.
 

KonradN

Super-Moderator
Mitarbeiter
Tipp dann tue das doch das nechste mal auch. :)
Schone deine Nerven 🤔
Meine Nerven müssen da nicht geschont werden. Nur leider
  • gab es ja neue Punkte (Dein Hinweis bzgl csv Libraries)
  • sind gewisse Aussagen geeignet, Andere zu Irritieren. Der TE könnte meinen, dass seine Lösung tatsächlich falsch ist.

Die Antworten gehen daher weniger Richtung Tobias sondern mehr Richtung TE und allen Anderen, die über den Thread stolpern und hier dann lesen.

Wie Du ja in der Vergangenheit mitbekommen hast, habe ich eher ein Problem mit aus meiner Sicht falschen Aussagen im Forum.
 

Oneixee5

Top Contributor
Zum CSV parsen nimmt man eine Library und versucht nicht selber es schlecht/falsch umzusetzen, wie dein kläglicher Versuch gezeigt hat.
Einfach zu irgendwelchen Libs zu greifen kann ein gefährlicher Ansatz sein, s. Log4jShell. Man könnte sich ganz unnötig Probleme einhandeln und die Komplexität der Anwendung steigern. Natürlich muss man das Rad nicht neu erfinden aber so einfache Dinge kann man selbst lösen/lernen.
 

Robert Zenz

Top Contributor
Natürlich muss man das Rad nicht neu erfinden aber so einfache Dinge kann man selbst lösen/lernen.

Als Erweiterung dazu, immer bei solchen Diskussionen wird der Satz "Erfinde das Rad nicht neu!" rausgeholt um fuer Bibliotheken zu argumentieren. Ich sehe es aber so, ich brauche ein Gummirad, kein Carbonrad mit Alufelgen auf einem Sportwagen. Oder schlimmer, ich haette gerne ein Holzrad, und nicht ein 27-kantiges-Platin-Rad welches aus 41 Teilen besteht und korrekt zusammen gesetzt werden muss vor der Verwendung. Eine Bibliothek nuetzt mir nur dann etwas wenn sie mir Arbeit abnimmt, und nicht mehr Arbeit macht. Dazu gehoert auch Wartbarkeit und Einarbeitungszeit, aber vorallem Wartbarkeit und Anpassbarkeit. Das ist etwas was viele immer gerne uebersehen.

Ein Beispiel dazu war mal ein kleines Projekt das ich verwenden wollte oder musste, hatte "nur" eine Abhaengigkeit, naemlich auf irgendeine riesige Commons-Bibliothek, weil der Author an einer Stelle nicht Map<String, Map<String, String>> machen wollte, sondern lieber so etwas wie GroupedMap<String, String, String>. Das war schon ziemlich krasses Beispiel weil dadurch relativ grosze Abhaeingkeiten dazu kamen. Die Aenderungen waren aber nur wenige Zeilen in dem Projekt um auf die Map umzustellen.
 

KonradN

Super-Moderator
Mitarbeiter
Eines möchte ich bei dieser Gelegenheit anbringen. Die eigene Sichtweise muss nicht immer die einzige sein. Den Eindruck bekommt man maschmal.
;)
Daher sind Argumente wichtig. Ich denke, dass ich diese durchaus bringe. Und natürlich gibt es viele Sichtweisen. Die Sichtweise von Tobias gibt es auch. Die Existenz eben dieser wurde von mir nie bestritten. Ich habe seine Sichtweise sogar am Anfang komplett ignoriert (weil halt schon der Verdacht bestand, dass es Tobias ist) und erst reagiert, als von ihm ohne jedes Argument etwas als falsch bezeichnet wurde, dass der TE als Lösung für sich bereits bestätigt hatte.

Das nur als kleiner Hinweis, damit hier nicht alles verdreht wird. Es ist ja nicht so, dass ich irgend etwas nicht als Möglichkeit einräume und darauf beharre … ich bringe lediglich meine Sichtweise und bin dabei bedacht, konstruktiv zu sein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Datentypen Wie am Besten abspeichern Java Basics - Anfänger-Themen 1
S Wie debugge ich dies am besten: SingleThreadExecutor führt Task nicht aus..? Java Basics - Anfänger-Themen 29
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
Salvatore321 Wie kann ich dieses Zustandsdiagramm am besten Umsetzen? Java Basics - Anfänger-Themen 5
dieter000 Hilfe bei dem Beispiel, wie gehe ich sowas am besten an? Java Basics - Anfänger-Themen 32
M konzeptuelle Frage: In welcher Klasse definiert man am Besten Methoden, die die Kommunikation mit dem User regeln? Java Basics - Anfänger-Themen 8
I Wo am besten eine String Konstante initialisieren? Java Basics - Anfänger-Themen 5
A Wie sollte ich es am besten an gehen - denkweise Java Basics - Anfänger-Themen 48
E Erste Schritte Java Webeintwicklung (JSP/Servlet), wie am Besten einsteigen? Java Basics - Anfänger-Themen 0
V welche Methode am besten sich für JPG einfügung in Java anzugewöhnen ? Java Basics - Anfänger-Themen 4
I Grafische Benutzeroberflächen - welche Komponente nehme ich am besten? Java Basics - Anfänger-Themen 13
DStrohma Best Practice Wie setze ich Suchparameter am besten? Java Basics - Anfänger-Themen 3
J Wie handle ich Threads am besten? Java Basics - Anfänger-Themen 2
H Wo speichert man am besten Daten? Appdata? Java Basics - Anfänger-Themen 14
B Datentypen Wie Daten am besten organisieren? Java Basics - Anfänger-Themen 7
M wie kann ich am besten die kleinste 2 elemente von einer Liste kriegen Java Basics - Anfänger-Themen 4
S Wie kann man am besten programmieren erlernen? Java Basics - Anfänger-Themen 32
P OOP Wie schreib ich dieses Programm am besten? Java Basics - Anfänger-Themen 6
B Wie lerne ich am besten? Java Basics - Anfänger-Themen 7
C Wie am besten die Verarbeitung der Eingabe verzögern ? Java Basics - Anfänger-Themen 5
C Wie Objekte am besten anklickbar machen ? Java Basics - Anfänger-Themen 9
H Wie lerne ich am Besten Java Java Basics - Anfänger-Themen 28
K OPP am besten verstehen !!! Java Basics - Anfänger-Themen 7
S Wie ereuge ich hier am besten eine Schleife Java Basics - Anfänger-Themen 12
D Logging sätmlicher Vorgänge, wie am besten realisieren? Java Basics - Anfänger-Themen 6
A wie lernt man am besten den code zu verstehen? Java Basics - Anfänger-Themen 7
G wo speichert man am besten eine Datei? Java Basics - Anfänger-Themen 4
A Welches GUI nutze ich am Besten? Java Basics - Anfänger-Themen 7
B mit was am besten speichern und abrufen?+ fenster in fenster Java Basics - Anfänger-Themen 4
G Massenersetzungen am besten auch mit replaceAll? Java Basics - Anfänger-Themen 3
F Anfänger - die besten Tipps Java Basics - Anfänger-Themen 3
G Wann am besten getSize() aufrufen? Java Basics - Anfänger-Themen 6
S Wie am besten JAVA lernen Java Basics - Anfänger-Themen 12
D Fehlerbehandlungen, wie am besten sinnvoll einsetzen? Java Basics - Anfänger-Themen 6
S schwieriger String für StringTokenizer, wie am Besten ? Java Basics - Anfänger-Themen 8
frau-u guter Stil - wie macht mans am Besten? Java Basics - Anfänger-Themen 8
A Wie fange ich am besten mit nem Programm an? Java Basics - Anfänger-Themen 10
A Zeichenkette teilen mit Substring oder Char Array Java Basics - Anfänger-Themen 14
A 6. Element aus einem Array zurückgeben Java Basics - Anfänger-Themen 1
A Was bedeutet bei einem Array "int a [MAX][MAX];", Java Basics - Anfänger-Themen 7
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben