Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich möchte eine externe Datei einlesen und in einem double[][] speichern. Die Datei ist so folgendermaßen aufgebaut:
1 2 R 3.4
1 3 L 2.3
Das Problem: Die Buchstaben lassen sich in meiner bisherigen Lösung nicht einlesen (Double.parse Double Befehl):
Code:
public Einlesen (int zeilen, int spalten){
//Einlesen der Daten aus der Datei "input.txt"
int i = 0;
inputmatrix = new double [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] = Double.parseDouble(items[j]);
}
catch (NumberFormatException e) {
System.out.println("Fehler beim Einlesen der Datei");
System.exit(-1);
}
}
if (++i == zeilen)
break;
}
}
catch (IOException e){
System.out.println ("Datei kann nicht geöffnet werden! " +e);
}
}
Nun habe ich überlegt, den StringBuffer zunächst in einen String zu konvertiern, dann von einem String in Double.
Code:
...
while ((line = br.readLine())!= null) {
String[] items = line.split(" ");
for (int j = 0; j < items.length; j++) {
try {
StringBuffer sb = new StringBuffer(items[j]);
items[j] = new String(sb);
items[j] = sb.toString();
System.out.println(sb);
double d = Double.valueOf(items[j].trim()).doubleValue();
System.out.println(d);
...
So klappt es aber leider auch nicht.
Ich habe danach mal testweise den String zunächst in einen Char gewandelt, und von Char dann nach Double.
Code:
String s = "R";
System.out.println(s);
char[] c = s.toCharArray();
char c = s.charAt(0);
System.out.println(c);
double d = Double.valueOf(s);
System.out.println(d);
char cc = (char)d;
System.out.println (cc);
Das klappt, aber so würde er mir bei den Zahlen alle Nachkommastellen wegnehmen.
Wäre toll, wenn mir einer helfen würde!
So wie das da aufgebaut ist, wird die NumberFormatException geworfen, sobald der Parser die Buchstaben erreicht hat.#
Lass die Buchstaben in der Datei doch einfach weg.
Das möchte ich eigentlich nicht. Ist die Eingabedatei für einen Schaltungssimulator, und die Buchstaben sollen die Bauteile darstellen. Klar kann ich einfach drei Zahlenwerte nehmen und die intern als R, L und C hinterlegen, aber das ist momentan nur meine Notlösung.