# Integer aus Textdatei auslesen und in Variable speichern



## julchen81 (6. Feb 2008)

Hallo,

ich möchte bestimmte Werte aus einer Textdatei auslesen.
Diese Textdatei sieht z.B. so aus:

X11Y27
Z33

Jetzt möchte ich in einer Variablen den Wert abspeichern, der nach dem X steht. Analog möchte ich den Wert nach dem Y in einer anderen Variablen speichern.

Ich verwende dazu 

```
import java.io.*;
public class Einlesen {
	public static void main(String[] args) {
		try {
			BufferedReader in = new BufferedReader(
					new FileReader("S:/Fertigungsdienste_Admin/Projekte-Praktikanten/Krieg Stefanie/Datenstrom/src/text.txt"));
			
			String str;
			char[] valX = new char[5];
			char[] valY = new char[5];
			str = in.readLine();
			
			while ((str = in.readLine()) != null) {
				if (str.indexOf("X") > 0) {
					str.getChars(str.indexOf("X") + 1, str.indexOf("Y") - 1, valX, 0);					
				} else if (str.indexOf("Y") > 0) {
					str.getChars(str.indexOf("Y") + 1, str.indexOf(" ") - 1, valY, 0);
				}
				System.out.println("valX: " + (String) valX.toString() + " valY: " + valY.toString());
			}
			in.close();
		} catch (Exception e) {}
	}
}
```

Jetzt gibt's mir natürlich nicht für X den Integer-Wert 22, sondern " [C@3e25a5" aus. 
Wie bitte kann ich diesen Wert als Integer abspeichern?

Liebe Grüße  :wink: 
Julia


----------



## Verjigorm (6. Feb 2008)

Ohne den Quellcode zu lesen:

String -> Integer:

Integer.parseInt(string)

ausserdem sollten die Exceptions nicht leer gelassen werden


----------



## SlaterB (6. Feb 2008)

nach diversen Änderungen:

```
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        String str = "X11Y27 ";
        char[] valX = new char[5];
        char[] valY = new char[5];


        if (str.indexOf("X") >= 0)
        {
            str.getChars(str.indexOf("X") + 1, str.indexOf("Y"), valX, 0);
            System.out.println("valX: " + Arrays.toString(valX));
        }
        if (str.indexOf("Y") > 0)
        {
            str.getChars(str.indexOf("Y") + 1, str.indexOf(" "), valY, 0);
            System.out.println("valY: " + Arrays.toString(valY));
        }
        System.out.println("valX: " + new String(valX) + " valY: " + new String(valY));
    }

}
```


----------



## Stiewen (6. Feb 2008)

Du solltest es mit einem Leerzeichen machen. Heisst, deine Werte so gestalten:

X11 Y27
Z33 

Dann nimmst du dir einen StringTokenizer (StringTokenizer st = new StringTokenizer("X11 Y27", " "). { Er trennt den String nun in "X11" und "Y27" in zwei Tokens }

Nun kannst du (unter der Bedinung, dass du immer nur EINEN buchstaben da zu stehen hast) den ersten platz im string in einen string packen oder so nehmen oder fuer was auch immer du das X bzw. das Y brauchst. Den letzten teil nimmst du dann in einen anderen string. 

So hast du zwei strings: 1.: X, 2.: 11

dann guckst du, ob noch ein token drin ist und machst das nochmal.

dann bekommst du noch mehr strings: 3.: Y, 4.: 27

Nun hast du die erste Zeile abgearbeitet und kannst das ja auch noch fuer die anderen machen.

LG


----------



## julchen81 (6. Feb 2008)

Danke erstmal!

@SlaterB
was für ein Objekt ist bitte Arrays ?

Liebe Grüße,
Julia


----------



## julchen81 (6. Feb 2008)

@stewen:

leider wird mir die Textdatei vorgegeben, und ich hab nicht die Wahl, ein Leerzeichen zu setzen... :cry: 

Trotzdem vielen Dank!!  :wink: 
Julia


----------



## SlaterB (6. Feb 2008)

eine Hilfsklasse der API

import java.util.Arrays;


----------



## Stiewen (6. Feb 2008)

Ist denn der Aufbau immer der:

<Buchstabe><Zahl><Zahl>

und das dann in einer Zeile auch mal mehrmals????

Dann waere es ja sehr easy


----------



## julchen81 (6. Feb 2008)

@Stiewen

nein, ganz so ist es nicht. Hier ein Auszug aus der mir vorgegebenen Datei:

%SPF1
M98
@714
R1=10000000
M97
L50
N006 T46065077 L50
R3=10000006R4=20000010 R5=20000300
R6=10165.130 R7=10165.000 R8=10165.000 R9=10165.000
R12=10000000
M97
@714
N009 T36065036 L50
R3=10000009R4=20000010 R5=20000300
R6=10165.100 R7=10165.000 R8=10165.000 R9=10165.000
R12=10000000
M97
@714
N001 T00000001 L50
R3=20000001R4=20000010 R5=20000300
R6=10463.300 R7=10027.536 R8=10000.000 R9=10000.000
R12=10000000
M97
..................

Davon soll ich jetzt einen Datensatz nach dem anderen auslesen. Ein Datensatz beginnt/endet mit "M97".
Die Variablen, die ich speichern soll: R1, L, N, T, L, R3, R4, R5, ... R12

Schönen Gruß  :wink:


----------



## julchen81 (6. Feb 2008)

@ SlaterB

Wenn ich das noch importiere, bekomme ich folgende Ausgabe:

valX: (_fünf Kästchen_) valY: (_fünf Kästchen_) 

valX: (_fünf Kästchen_) valY: (_fünf Kästchen_) 


 

Julia[/i]


----------



## SlaterB (6. Feb 2008)

wie gesagt, diverse Dinge in deinem Code sind zu ändern,

>= 0 statt >, das else weg, Indexe anders usw.

außerdem überspringst du die erste Zeile


----------



## julchen81 (6. Feb 2008)

ich taste mich ran... dickes Dankeschön!!!

Und einen erholsamen Feierabend  :wink: 
Julia


----------

