Einfügen von Werten aus TXT-Datei in ein Array !?!

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
HI,

schreib gerade eine Applikation, die (unteranderem) aus einer Textdatei Daten in ein Array speichern soll. Die Daten sehen z.b. wie folgt aus :


0 0 0
0 1 0
0 2 1


... am ende ein [8][8][3] Array ....

die Daten sollen Zeilen weise auch so eingetragen werden ( hier also erste Zeile:

[0][0][0] = 0 0 0 )


ich hab viel mit dem FileReader und so ausprobiert aber es nicht so geschafft wie ich es oben erwähnt haben wollte :cry: !


vielen Dank jetzt schon !

für euch ist das sicher ein "klacks" !
 

mariopetr

Bekanntes Mitglied
hallo,

um die datei auszulesen, empfielt sich ein bufferedReader

Code:
List tmp=new ArrayList();
BufferedReader reader=new BufferedReader(new FileReader("myFile"));
String buffer;
while(reader.ready && (buffer=reader.readLine())!=null)
{
	tmp.add(handleLine(buffer));

damit haben wir schon mal die einzelnen zeilen deiner textdatei, jetzt brauchen wir noch die einzelnen werte (methode handleLine)

Code:
private String[] handleLine(String input)
{
	return input.split("[ ]*") /* statt der ueblichen methode mit StringTokenizer nehmen wir regular expresions, damit sind wir variabler im umgang mit trennzeichen, hier zum beispiel beliebig viele spaces*/
}

}
jetzt haben wir eine liste von String[], nun wird das array erstellt

Code:
int maxwith=0;
Iterator iterator=tmp.iterator();
while(iterator.hasNext())
{
	maxwith=Math.max(maxwith,((String[])iterator.next()).length);
}

//jetzt erstellen wir das array
int[][] result=new int[tmp.size()][maxwith];

iterator=tmp.iterator();
int count=0;
while(iterator.hasNext())
{
	String[] sa=(String[])iterator.next();
	for(int i=0; i<result[count][i]; i++)
		result[count][i]=(i<sa.length ? Integer.parseInt(sa[i]) : Integer.MinValue) /* damit man nicht gesetzte werte wieder findet*/
	count++;
}

zugegeben, wenn man weis wie gross das array ist, kann man sich einiges spaaren, fuer fehler wird keine haftung uebernommen (exeptionhandling habe ich gleich ganz gelassen) da ich momentan kein java zur hand habe (vom wein wollen wir mal nicht reden)
 
G

Gast

Gast
WOW !


vielen Dank ... ich konnte ja nicht ahnen, dass da so viel dahinter steckt !

vieles seh ich z.B. auch das erste Mal !


ich poste später den gesamten Quelltext rein, aber ich glaube nicht, dass ich das mit den Exeptions so auf die Reihe bekomme ....
 
G

Gast

Gast
Sorry aber ich komm einfach nicht weiter !

hier mien Quelltext ... der Editor zeigt mir noch 1 Fehler beim Compilieren an :

Code:
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class Lesen extends Frame {
	
	
				
public Lesen() {
		
		Label L = new Label("hallo");
		add(L);
		setSize(100, 400);
		setVisible(true);
	

	
  addWindowListener(new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
	
				dispose();
				System.exit(0);
				
				
					}});
					}
	
	
	
	public class einlesen{
		
			 
			List tmp = new ArrayList();
			BufferedReader reader=new BufferedReader(new FileReader("datei.txt")); 
			String buffer; 
			
			while(reader.ready && (buffer=reader.readLine())!=null) { 
	
   
   						mp.add(handleLine(buffer));		
  
 																	}}

		private String[] handleLine(String input) { 
   			return input.split("[ ]*");

} 


	public void array(){

		int maxwith=0; 
		Iterator iterator=tmp.iterator(); 
		
			while(iterator.hasNext()) { 
   
   
   			maxwith=Math.max(maxwith,((String[])iterator.next()).length); 

										} 


		int[][] result=new int[tmp.size()][maxwith]; 

					iterator=tmp.iterator(); 
					int count=0; 

		while(iterator.hasNext()){ 
   
   
   				String[] sa=(String[])iterator.next(); 
   					
   					for(int i=0; i<result[count][i]; i++){
     
    result[count][i]=(i<sa.length ? Integer.parseInt(sa[i]) : Integer.MinValue);
   count++; 


}}}
	
public static void main(String args[]) {
		System.out.println("Starting Lesen...");
		Lesen mainFrame = new Lesen();
		mainFrame.setSize(400, 400);
		mainFrame.setTitle("Lesen");
		mainFrame.setVisible(true);

		}}



- Kann mir auch jemand sagen, wie ich die Arrays anzupassen habe damit ein 8 / 8 / 3 Array

daraus wird ,,, oder erkennt der code das bis jetzt schon ?!

- das mit den Exceptions habe ich auch nicht hinbekommen :-(
 

gustav

Aktives Mitglied
Hallo bevor ich zu einer Antwort komme erst mal folgenden Hinweise :
- Du solltest Dir einen sauberen und vor allem lesbaren Programmierstil angewöhnen. In Deiner geposteten Fassung gab es keinerlei Klammerebenen bzw. eine logische Struktur.

Der Hauptschwerpunkt Deiner Fehlermeldungen lag in der Routine einlesen() die Du irgendwie als Klasse definiert hattest. Sind Dir die Unterschiede klar ?

Aber um nicht weiter ins Detail gehen zu muessen hier mein Vorschlag
Code:
class Lesen extends Frame 
{
   
   
java.util.List tmp ;
            
public void Lesen() 
{
      
      Label L = new Label("hallo");
      add(L);
      setSize(100, 400);
      setVisible(true);


  addWindowListener(new WindowAdapter() 
  {
      
      public void windowClosing(WindowEvent e) 
      {
            dispose();
            System.exit(0);
      }
  });
} 
   

   
   
   public void einlesen()
   {
      
         
         tmp = new ArrayList();
         BufferedReader reader=new BufferedReader(new FileReader("datei.txt"));
         String buffer;
         
         while(reader.ready() && (buffer=reader.readLine())!=null) 
         {
               mp.add(handleLine(buffer));      
 
         }
   }

   private String[] handleLine(String input) 
   {
      return input.split("[ ]*");
   }


   public void array()
   {

      int maxwith=0;
      Iterator iterator=tmp.iterator();
      
         while(iterator.hasNext()) 
         {
            maxwith=Math.max(maxwith,((String[])iterator.next()).length);
         }


      int[][] result=new int[tmp.size()][maxwith];

      iterator=tmp.iterator();
      int count=0;

      while(iterator.hasNext())
      {
         String[] sa=(String[])iterator.next();
         for(int i=0; i<result[count][i]; i++)
         {
           result[count][i]=(i<sa.length ? Integer.parseInt(sa[i]) : Integer.MIN_VALUE);
           count++;
         }
       }
    }
   
public static void main(String args[]) 
{
      System.out.println("Starting Lesen...");
      Lesen mainFrame = new Lesen();
      mainFrame.setSize(400, 400);
      mainFrame.setTitle("Lesen");
      mainFrame.setVisible(true);

}
 
}
Leider wußte ich mit dem Objekt mp in einlesen() nicht viel anzufangen, deshalb liefert der Compiler immer noch eine Fehlermeldung. Der Rest sollte soweit "sauber" sein.... :)
 

mariopetr

Bekanntes Mitglied
versuche mal das

Code:
package test;

import java.awt.BorderLayout;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.WindowConstants;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

class T01 extends JFrame
{

	private final java.util.List tmp=new ArrayList();
	
	public T01()
	{
		super("Lesen");//  //$NON-NLS-1$
		setSize(100, 400);
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		einlesen();
		int[][] myArray=array();
		JScrollPane scrollPane=new JScrollPane(new JTable(new MyModel(myArray)));
		getContentPane().setLayout(new BorderLayout());
		getContentPane().add(scrollPane,BorderLayout.CENTER);
		pack();
		setVisible(true);
	}
	
	public void einlesen()
	{
		try
		{
			BufferedReader reader= new BufferedReader(new FileReader("/tmp/datei.txt"));//  //$NON-NLS-1$
			String buffer;

			while (reader.ready() && (buffer= reader.readLine()) != null)
			{
				tmp.add(handleLine(buffer));
			}
		}
		catch (Exception e)
		{
			System.out.println("error on 'lesen': "+e.getMessage()); //  //$NON-NLS-1$
			e.printStackTrace();
		}
	}

	private String[] handleLine(String input)
	{
		return input.split("[ ]");//  //$NON-NLS-1$
	}

	public int[][] array()
	{
		int[][] res=null;
		int maxwith= 0;
		Iterator iterator= tmp.iterator();

		while (iterator.hasNext())
		{
			maxwith= Math.max(maxwith, ((String[]) iterator.next()).length);
		}

		res= new int[tmp.size()][maxwith];

		iterator= tmp.iterator();
		int count= 0;

		while (iterator.hasNext())
		{
			String[] sa= (String[]) iterator.next();
			for (int i= 0; i < res[count].length; i++)
			{
				res[count][i]=
					(i < (sa.length)
						? Integer.parseInt(sa[i])
						: Integer.MIN_VALUE);
			}
			count++;
		}
		return res;
	}

	public static void main(String args[])
	{
		System.out.println("Starting Lesen..."); //  //$NON-NLS-1$
		new T01();
	}
	
	private class MyModel extends AbstractTableModel
	{
		private int[][] m_values;
		
		public MyModel(int[][] values)
		{
			m_values=values;
		}
		/* (non-Javadoc)
		 * @see javax.swing.table.TableModel#getColumnCount()
		 */
		public int getColumnCount()
		{
			return m_values[0].length;
		}

		/* (non-Javadoc)
		 * @see javax.swing.table.TableModel#getRowCount()
		 */
		public int getRowCount()
		{
			return m_values.length;
		}

		/* (non-Javadoc)
		 * @see javax.swing.table.TableModel#getValueAt(int, int)
		 */
		public Object getValueAt(int rowIndex, int columnIndex)
		{
			return ""+m_values[rowIndex][columnIndex];//  //$NON-NLS-1$
		}

	}
}
 
G

Gast

Gast
Vielen Dank, dass du dir so große Mühe gemacht hast !

Nur ich kann damit leider nicht viel anfangen, da ich keine Auflistung der TXT Datei haben wollte,
sondern damit "normal" arbeiten kann!

0 0 1
1 0 1
2 0 0
3 0 1
4 0 2
5 0 0
6 0 1
7 0 2
8 0 1
0 1 0
1 1 0
2 1 0
3 1 0
4 1 1
5 1 2
6 1 0
7 1 1
8 1 0
1 2 0
2 2 1
3 2 1
4 2 1
5 2 1
6 2 1
7 2 0
8 2 0



So sehe die TXTDatei aus, wobei jede zeile ein "Punkt" sein soll .. die beiden ersten Reihen bilden die Werte auf der Koordinaten-Achse; die letzte Reihe gibt dem Punkt einen wert von 0,1 oder 2:


normal damit arbeiten damit meine ich, dass ich dann a [1] [0] = 1 habe.

insgesamt soll das ein a [9] [9] Array werden !

bei deinem Programm gibt es bei "001" nur "1" aus.

ich hoffe du hast mein Problem erkannt !

wäre echt stark wenn du mir noch einmal helfen würdest !
 
G

Gast

Gast
Brauche echt eure Hilfe Jungx !

bei Unklarheiten einfach die Frage posten !

thx
 
G

Gast

Gast
Vereinfacht sehe der Quelltext wofür ich diese Arrays aus der TXT Datei bräuchte so aus :

Code:
import java.awt.*;


public class zeichnen extends Frame
{
	Label L = new Label("Prospektoren-Plan");
	
	int a[][] =new int[2][2];
	
	
	public zeichnen()
	{
	

	setSize(600,600);
	setVisible(true);
	
	}


	public void paint(Graphics g)
	{
	
	a[0][0] = 1;
	a[0][1] = 0;
	a[1][0] = 1;
	a[1][1] = 1;
	
	
	
		for(int i=0; i<2; i++)
	{
				for(int j=0; j<2; j++)
		{	
		
			if (a[i][j]==1)
			{
				g.setColor(Color.yellow);
				g.fillRect(i*20+50 , j*20+50 , 20 , 20 );
			}
			
			else { g.setColor(Color.black);
				g.fillRect(i*20+50 , j*20+50 , 20 , 20 );}
			
		}
	
	}
	}
	

	public static void main(String[] args)
	{
	
	new zeichnen();
	
	}

}



hoffe das hilft euch !

ciao
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C In DefaultTableModel nachträglich Werte einfügen Allgemeine Java-Themen 2
A Java ListNode Element einfügen ohne Bibliothek Allgemeine Java-Themen 6
S Link element an vorletzte stelle einfügen Allgemeine Java-Themen 2
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
G JTextField Inhalt in einem Long einfügen Allgemeine Java-Themen 2
G Excel Tabelle lesen und in neue Excel Tabelle einfügen Allgemeine Java-Themen 11
S Wo .close() einfügen? Allgemeine Java-Themen 0
I Apache POI Word Text einfügen Allgemeine Java-Themen 26
K Swing OpenStreetMap in JFrame einfügen Allgemeine Java-Themen 1
B Eclipse Ekit-Editor einfügen Allgemeine Java-Themen 0
T Neuen Kanal in Bild (TIFF) einfügen à la Photoshop Allgemeine Java-Themen 2
D Symbol in Word-Dokument einfügen Allgemeine Java-Themen 1
N Automatisches einfügen einer selbst generierten ID in Klasse mit Annotation Allgemeine Java-Themen 8
F 2D Array in jList einfügen Allgemeine Java-Themen 8
J XML Dokument Zeilenumbruch in den Quellcode einfügen Allgemeine Java-Themen 5
H Semicolon Einfügen JSP Seite Allgemeine Java-Themen 9
K Neue Elemente in JList einfügen Allgemeine Java-Themen 2
Todesbote Excel Blattschutz aufheben und Daten einfügen Allgemeine Java-Themen 3
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
Z Sortiertes Einfügen in doppelt verkettete Liste Allgemeine Java-Themen 5
S Text in for Schleife in Label einfügen Allgemeine Java-Themen 4
S JPanel einfügen in MainClass Allgemeine Java-Themen 4
R Schnelles Einfügen in SortedSet Allgemeine Java-Themen 11
Z Ausschneiden, Kopieren, Einfügen, Löschen in JTextArea Allgemeine Java-Themen 5
JAVAnnik Bilder in JLabel Array einfügen Allgemeine Java-Themen 2
E Bild mit Listener einfügen Allgemeine Java-Themen 3
reibi Leeres Verzeichnis in ein Zipfile einfügen Allgemeine Java-Themen 12
N Tupel in eine SET einfügen Allgemeine Java-Themen 3
S Progressbar einfügen Allgemeine Java-Themen 4
W xml File einlesen und in eine andere xml File einfügen.. Allgemeine Java-Themen 2
L List <Hauser> in Combobox einfügen Allgemeine Java-Themen 5
D Kopieren und Einfügen Allgemeine Java-Themen 8
D Einfügen über JMenuBar Allgemeine Java-Themen 4
N einfügen string in methode Allgemeine Java-Themen 10
R doppelt verkettete Liste: Fehler beim Einfügen Allgemeine Java-Themen 3
G Zeile einfügen in TreeTable Allgemeine Java-Themen 2
G Teilstring in einen String einfügen Allgemeine Java-Themen 5
G Tabelleneintrag einfügen Allgemeine Java-Themen 10
P JTree/ Nodes einfügen Allgemeine Java-Themen 2
G Plug-in: Wie JButton einfügen? Allgemeine Java-Themen 12
A FileChannel: Mitten in eine Datei was einfügen Allgemeine Java-Themen 2
W Daten in Access einfügen über Java Allgemeine Java-Themen 21
G Plugin (Visual Editor) in Eclipse einfügen Allgemeine Java-Themen 2
Zed JList Object einfügen und Text anzeigen Allgemeine Java-Themen 3
P Timestamp in eine Firebird-Datenbank einfügen Allgemeine Java-Themen 6
K Bilder mit Java in MS Word einfügen Allgemeine Java-Themen 2
M Text in JTextfield einfügen sofort dann wird Text gekürzt Allgemeine Java-Themen 2
H html datein einfügen Allgemeine Java-Themen 7
M Pfeilzeichen (z.B. ALT + 26) einfügen Allgemeine Java-Themen 2
S Bild aus Zwischenablage in Applet einfügen Allgemeine Java-Themen 2
R Frage zu einfügen in generische lineare Liste Allgemeine Java-Themen 7
S Werte in Tabelle einfügen! Allgemeine Java-Themen 9
N Zeilenumbruch in String nach jeweils x Zeichen einfügen? Allgemeine Java-Themen 6
G Text cursorgenau einfügen [ehemals hilfe ... dringend] Allgemeine Java-Themen 7
G Hilfe - JButton in JTable (Spalte) einfügen! Allgemeine Java-Themen 6
S addAtPosition - Zahl an einer bestimmten Position einfügen Allgemeine Java-Themen 8
G wie Klasse in JFrame "einfügen" Allgemeine Java-Themen 12
D iText: Tabelle in Footer einfügen Allgemeine Java-Themen 6
S Test mit Werten aus der .properties Allgemeine Java-Themen 4
Zrebna Random Number - Generische Formel zwischen zwei INKLUSIVEN Werten Allgemeine Java-Themen 16
O Variablen Addition von Double-Werten ergibt seltsame 0.9999999 Zahlen Allgemeine Java-Themen 2
S @Value mit bestimmt Werten, sonst default Allgemeine Java-Themen 42
Z Array mit unterschiedlichen Werten Allgemeine Java-Themen 1
B Verteilungs-/Vergabe-Algorithmus mit abhängigen Score-Werten Allgemeine Java-Themen 3
L einfache Verzinsung mit for-Schleife & Ausschluss von Werten beim Einlesen Allgemeine Java-Themen 5
T Sechsecke, erkennen von bestimmten Werten Allgemeine Java-Themen 9
I Datentypen Mögliche Auswahl an Werten Allgemeine Java-Themen 4
I 2D-Grafik Polygon mit Double Werten zeichnen Allgemeine Java-Themen 4
S Baum mit vordefinierten Werten befüllen Allgemeine Java-Themen 2
M Problem mit return-werten Allgemeine Java-Themen 35
O Problem bei der Umwandlung von Hex-Werten Allgemeine Java-Themen 5
T Wurfweitenberechnung: X-Werte bei extremen Werten falsch. Allgemeine Java-Themen 15
A Problem bei Übergabe von Werten in ein double Array. Allgemeine Java-Themen 21
N Array mit null Werten filtern Allgemeine Java-Themen 5
W sin und cos bei hohen Werten extrem langsam Allgemeine Java-Themen 12
MQue zwischen Class zum speichern von Werten Allgemeine Java-Themen 4
S Problem beim Einlesen von byte-werten aus datei Allgemeine Java-Themen 2
G JComboBox mit Werten aus einer Access Datenbank füllen Allgemeine Java-Themen 18
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
E Java .exe Datei mit args starten Allgemeine Java-Themen 2
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
M Excel Datei Erstellen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben