Hallo,
ich hab heute wieder weitergemacht mit der Programmierung meines Schaltungssimulators. Hab zunächst beim Einlesen mit int Werten gearbeitet und das Ganze lauffähig gemacht, hier mit 4 Knoten, input.txt enthält in der ersten und zweiten Spalte die Position, in der dritten Spalte einen Wert.
Nun möchte ich meine externe Datei in Wirklichkeit so aufbauen: Die Erste und Zweite Spalte gibt die Knoten an, zwischen denen das Bauteil liegt (int), die dritte Spalte enthält die Angabe über das Bauteil, R,C oder L (char), die vierte Spalte den Wert des Bauteils(double). Da ich die eingelesenen Werte zunächst in eine Matrix einlese und danach daraus meine Matrix zum berechnen entwickle, habe ich nun das Problem in welchem Typ ich die Daten einlesen kann:
Könnte alles als double deklarieren und die tatsächlichn int werte dann konvertieren, aber wie geht das dann mit den char?
Habe dann vor in //Füllen der Nebendiagonale eine switch-case Anweisung einzubauen, für 'R', 'L' und 'C', (unterschiedliche Formeln) aber dafür müsst ich erstmal wissen wie ich nun die Datei mit den unterschiedlichen Typen in ein Array einlesen kann, (Char.parseChar oder so gibt es ja nicht).
Liebe Grüße Silver
ich hab heute wieder weitergemacht mit der Programmierung meines Schaltungssimulators. Hab zunächst beim Einlesen mit int Werten gearbeitet und das Ganze lauffähig gemacht, hier mit 4 Knoten, input.txt enthält in der ersten und zweiten Spalte die Position, in der dritten Spalte einen Wert.
Code:
import java.io.*;
class Einlesen {
private int[][]matrix = new int[4][4];
private int[][]inputmatrix;
public Einlesen (int zeilen, int spalten){
//Einlesen der Daten aus der Datei "input.txt"
int i = 0;
inputmatrix = new int [zeilen][spalten];
try {
FileReader fr = new FileReader ("input.txt");
BufferedReader br = new BufferedReader (fr);
String line;
while ((line = br.readLine())!= null) {
String[] items = line.split(" ");
for (int j = 0; j < items.length; j++) {
try {
inputmatrix[i][j] = Integer.parseInt(items[j]);
}
catch (NumberFormatException e) {
System.out.println('?');
System.exit(-1);
}
}
if (++i == zeilen)
break;
}
}
catch (IOException e){
System.out.println ("Datei kann nicht geöffnet werden! " +e);
}
//Füllen der Nebendiagonale
for (int z = 0; z < inputmatrix.length; z++){
int r = inputmatrix[z][0] - 1;
int s = inputmatrix[z][1] - 1;
int n = 0;
n += inputmatrix[z][2];
matrix[r][s] = - n;
matrix[s][r] = matrix [r][s];
}
//Füllen der Hauptdiagonalen
for (int z = 0; z <matrix.length; z++){
int hs = 0;
int hr = 0;
for (int r = z; r < matrix.length; r++){
hr += matrix[z][z] + matrix[z][r];
}
for (int s = z; s >= 0; s--){
hs += matrix[z][z] + matrix[z][s];
}
matrix[z][z]= - hs - hr;
}
}
//Übergabe der Matrix für den Zugriff heraus aus anderen Klassen
public int[][]getMatrix(){
return matrix;
}
}
Nun möchte ich meine externe Datei in Wirklichkeit so aufbauen: Die Erste und Zweite Spalte gibt die Knoten an, zwischen denen das Bauteil liegt (int), die dritte Spalte enthält die Angabe über das Bauteil, R,C oder L (char), die vierte Spalte den Wert des Bauteils(double). Da ich die eingelesenen Werte zunächst in eine Matrix einlese und danach daraus meine Matrix zum berechnen entwickle, habe ich nun das Problem in welchem Typ ich die Daten einlesen kann:
Könnte alles als double deklarieren und die tatsächlichn int werte dann konvertieren, aber wie geht das dann mit den char?
Habe dann vor in //Füllen der Nebendiagonale eine switch-case Anweisung einzubauen, für 'R', 'L' und 'C', (unterschiedliche Formeln) aber dafür müsst ich erstmal wissen wie ich nun die Datei mit den unterschiedlichen Typen in ein Array einlesen kann, (Char.parseChar oder so gibt es ja nicht).
Liebe Grüße Silver