# einlesen aus einem file/Matrix erstellen



## Glee (21. Januar 2004)

habe folgendes Problem.
ich weiß zwar wie ich aus einem file zeilenweise einlesen kann.
ich soll eine Matrix erstellen. mit Konstruktor Matrix(BufferedReader inbuf){}
im file das als Argument übergeben wird stehen zeilenweise natürliche zahlen. die erste soll sie Anzahl der Zeilen die 2. Zahl die Anzahl der Spalten. die restlichen Zahlen sollen in eine Matrix eingefügt werden. also ergibt zB.
2
3
1
2
3
4
5
6

123
456

es sollen keine negativen Zahlen akzeptiert werden  sondern mit einer IllegalArgumentException quittiert werden...

kann mir jemand helfen
danke


----------



## Thomas Darimont (23. Januar 2004)

Servus!


```
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;

/*
 * Created on 23.01.2004
 *
 * To change the template for this generated file go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */

/**
 * @author Administrator
 *
 * To change the template for this generated type comment go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */
public class MatrixTest {

	/**
	 * 
	 */
	public MatrixTest() {
		super();
		// TODO Auto-generated constructor stub
	}

	public static void main(String[] args) {
		new MatrixTest().doIt();
	}

	/**
	 * 
	 */
	private void doIt() {
		// TODO Auto-generated method stub
		File file = new File("c:/matrix.txt");
		InputStream is = null;
		try {
			is = file.toURL().openStream();

			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);

			Matrix matrix = new Matrix(br);
			System.out.println(matrix);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	class Matrix {

		private int[][] mtx;

		public Matrix(BufferedReader br) {
			try {
				int rows = Integer.parseInt(br.readLine());
				int columns = Integer.parseInt(br.readLine());

				mtx = new int[rows][columns];

				for (int i = 0; i < mtx.length; i++) {
					for (int j = 0; j < mtx[i].length; j++) {
						mtx[i][j] = Integer.parseInt(br.readLine());
					}
				}

			} catch (NumberFormatException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		/**
		 * @return
		 */
		public int[][] getMtx() {
			return mtx;
		}

		/**
		 * @param is
		 */
		public void setMtx(int[][] is) {
			mtx = is;
		}

		public String toString() {
			if (mtx == null)
				return "";

			else {

				StringBuffer sb = new StringBuffer();
				for (int i = 0; i < mtx.length; i++) {
					for (int j = 0; j < mtx[i].length; j++) {
						//System.out.print(mtx[i][j] + " ");
						sb.append(mtx[i][j] + " ");
					}
					//System.out.println();
					sb.append("\n");
				}
				return sb.toString();
			}

		}

	}

}
```

matrix.txt

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

Gruß Tom


----------



## bastes (2. November 2004)

Hallo,

ich habe ein ähnliches Problem. Leider habe ich absolut keine Ahnung von Java.
Folgendes Problem habe ich:
Ich soll eine Datei ("aliases") einlesen. Diese Datei beinhaltet Emailverteilerlisten.
hier ein Ausschnitt:

pc555: pc_1120,\ws_1010,\ws_1130,\pc1340,\nb1300,\nb1680,\pc1190
cady: cd_75
inter: inter_108, \inter_980, \pc_1160, \nb1570
krech: krech_94, \krech_87
ona: ona_23, \ona_970, \pc1330

Hast du oder sonst jemand vielleicht einen Lösungsvorschlag? Wie gesagt ich habe echt wenig ahnung von Java.

Vielen Dank schon mal.

Viele Grüße
 Sebastian


----------

