StringBuffer(Buchstabe) -> Double konvertieren

Status
Nicht offen für weitere Antworten.

Silver

Mitglied
Hallo,

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!

Liebe Grüße Silver
 

JPKI

Top Contributor
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.
 

Silver

Mitglied
JPKI hat gesagt.:
So wie das da aufgebaut ist, wird die NumberFormatException geworfen, sobald der Parser die Buchstaben erreicht hat.#

Ja, genau das ist das Problem.

JPKI hat gesagt.:
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.

Liebe Grüße Silver
 

Silver

Mitglied
Juchu, hab nun eine Lösung gefunden. Seht selbst, nicht schön, aber klappt :D

Code:
import java.io.*;

public class Einlesen2 {
	public static void main (String[] args){
		int i = 0;
		int zeilen = 6;
		int spalten = 4;
		double[][]inputmatrix;
		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 <= 1; j++){
					try {
						inputmatrix[i][j] = Double.parseDouble(items[j]);
					}	
					catch (NumberFormatException e) {
						System.out.println("Fehler beim Einlesen der Datei");
						System.exit(-1);
					}
				}
				for (int k = 2; k < 3; k++){	
					try {
						String s = items[k];
						char c = s.charAt(0);
						System.out.println(c);
						double d = Double.valueOf(c);
						System.out.println(d);
						inputmatrix[i][k] = d;
					}
					catch (NumberFormatException e) {
						System.out.println("Fehler beim Einlesen der Datei");
						System.exit(-1);
					}
				}
				for (int l = 3; l < items.length; l++) {	
					try {
						inputmatrix[i][l] = Double.parseDouble(items[l]);
					}	
					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);
			}
			
		for (i = 0; i < inputmatrix.length; i++){
			for (int j = 0; j < inputmatrix [i].length; j++){
				System.out.print(i);
				System.out.print(j);
				System.out.print(": ");
				System.out.print((inputmatrix[i][j]));
				System.out.print("  ");
					}
				System.out.println ();
			}		
	}
}

Liebe Grüße Silver
 

JPKI

Top Contributor
Probier's mal so:
Code:
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 {

                  int k = j;

                  for (int l = 0; l < items[j].length; l++)
                   if (!Character.isDigit(items[j].charAt(l)) && !(items[j].charAt(l) == '.'))
                    k++;

                  inputmatrix[i][j] = Double.parseDouble(items[k]);
               }
               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);
      }

Code ohne Garantie, is nur schnell hingesaut^^
 

Silver

Mitglied
Viele Dank JPKI! Nach kleinen Anpassungen passt's und ist viel eleganter als meine Lösung:

Code:
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 {

	                  double k = j;
	                  String p = items[j];
	                  char c;
	                  
	                  for (int l = 0; l < items[j].length(); l++)
	                	if (!Character.isDigit(items[j].charAt(l))){
	                	   		c = p.charAt(0);
								k = Double.valueOf(c);
								inputmatrix[i][j] = k;
	                	}
						else	
								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);
	      }

Eine Frage hätte ich dann noch: Was bedeutet items[j].charAt(l) in der If Schleife genau?

Liebe Grüße Silver
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Compiler -> unendliche Schleife (StringBuffer?) Warum? Java Basics - Anfänger-Themen 2
C Stringbuffer auf Zeilenumbruch überprüfen Java Basics - Anfänger-Themen 14
A StringBuffer Java Basics - Anfänger-Themen 1
H Wie wandel ich ein Datum in eine Zeichenkette um mit StringBuffer? Java Basics - Anfänger-Themen 3
S Dateien/LinkedList/StringBuffer - SOrtierung klappt nicht so ganz Java Basics - Anfänger-Themen 2
D Input/Output Stringbuffer Befehle bei Konvertierung in String Java Basics - Anfänger-Themen 19
B Wie wichtig ist Verwendung von StringBuffer in Schleifen? Java Basics - Anfänger-Themen 10
C Elemente im StringBuffer ersetzen Java Basics - Anfänger-Themen 19
F Problem bei Rückgabe von StringBuffer aus Methode Java Basics - Anfänger-Themen 6
M StringBuffer Java Basics - Anfänger-Themen 2
K Alle vorkommen eines Zeichens in StringBuffer Objekt löschen Java Basics - Anfänger-Themen 6
A String wird nur einmal an den StringBuffer angehängt Java Basics - Anfänger-Themen 10
F StringBuffer und String kompatibel ?? Java Basics - Anfänger-Themen 5
M StringBuffer - Methoden Java Basics - Anfänger-Themen 6
H String/StringBuffer nach zeilen aufteilen Java Basics - Anfänger-Themen 2
M Frage zum StringBuffer Java Basics - Anfänger-Themen 7
A Unterschied zwischen String & Stringbuffer! Java Basics - Anfänger-Themen 14
A Zeichen selektiv in einen neuen StringBuffer speichern Java Basics - Anfänger-Themen 2
K StringBuffer Java Basics - Anfänger-Themen 5
S StringBuffer in Datei - Problem mit neuer Zeile Java Basics - Anfänger-Themen 2
Z Was ist ein StringBuffer und wie benutz ich das Ding? Java Basics - Anfänger-Themen 3
L Streamklassen, Filewriter und StringBuffer Java Basics - Anfänger-Themen 2
S StringBuffer anstatt += Java Basics - Anfänger-Themen 8
D String/StringBuffer mit Zeichen einer Sorte füllen Java Basics - Anfänger-Themen 14
B StringBuffer Problem Java Basics - Anfänger-Themen 2
N String oder StringBuffer/StringBuilder Java Basics - Anfänger-Themen 6
D string/stringbuffer Java Basics - Anfänger-Themen 6
G String vs StringBuffer Java Basics - Anfänger-Themen 11
J StringBuffer-Objekt soll auf Char-Array zugreifen. Java Basics - Anfänger-Themen 4
J StringBuffer Java Basics - Anfänger-Themen 4
T Unicode StringBuffer -> String = unleserlich Java Basics - Anfänger-Themen 7
K Wie kann ich daraus einen StringBuffer machen ? Java Basics - Anfänger-Themen 4
R OutputStream direkt in StringBuffer schreiben lassen Java Basics - Anfänger-Themen 2
L String to StringBuffer Java Basics - Anfänger-Themen 3
B StringBuffer Java Basics - Anfänger-Themen 8
B Stringbuffer Java Basics - Anfänger-Themen 4
S PrintWriter mit StringBuffer? Java Basics - Anfänger-Themen 3
G StringBuffer Array null setzen Java Basics - Anfänger-Themen 2
J String in StringBuffer ersetzen Java Basics - Anfänger-Themen 7
S StringBuffer.toString() Java Basics - Anfänger-Themen 3
K Wie lese ich einen StringBuffer ein? Java Basics - Anfänger-Themen 4
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
A Bei VierGewinnt Eingabe per Buchstabe (a,b,c...) Java Basics - Anfänger-Themen 2
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
Tom/S KeyCode zu Buchstabe Java Basics - Anfänger-Themen 7
S char auf buchstabe/zeichen prüfen Java Basics - Anfänger-Themen 1
R Buchstabe aus String entfernen Java Basics - Anfänger-Themen 13
Tacofan Hangman - ist der Buchstabe vorhanden wenn ja wo kommt er vor Java Basics - Anfänger-Themen 6
V Ein Wort einlesen und dann jede Buchstabe ausgeben Java Basics - Anfänger-Themen 10
C Buchstabe "K" im zweidimensionalen Array programmieren Java Basics - Anfänger-Themen 1
C Buchstabe programmieren Java Basics - Anfänger-Themen 4
J Buchstabe (char) an zufällige Position eines Strings einfügen Java Basics - Anfänger-Themen 1
D Buchstabe zählen/mappen Java Basics - Anfänger-Themen 3
W Erste Schritte Erster Buchstabe groß bzw. klein???? Java Basics - Anfänger-Themen 2
W Vergleich ob Buchstabe in einem Wort enthalten ist Java Basics - Anfänger-Themen 3
S Liste mit Buchstabe sortiert befüllen Java Basics - Anfänger-Themen 3
K Regex - Jeder buchstabe nur einmal Java Basics - Anfänger-Themen 7
B if equals(irgendeine Zahl+Buchstabe) Java Basics - Anfänger-Themen 6
T String splitten beim wechsel vom buchstabe zu zahl! Java Basics - Anfänger-Themen 8
J Ein Wort einlesen und dann jede Buchstabe ausgeben Java Basics - Anfänger-Themen 25
M regex-Ausdruck irgendein Buchstabe 1 mal Java Basics - Anfänger-Themen 8
H Buchstabe in Programm bringen Java Basics - Anfänger-Themen 6
? Algo gleicher Buchstabe in 2 Wörtern suchen Java Basics - Anfänger-Themen 16
G Erster Buchstabe groß bzw. klein? Java Basics - Anfänger-Themen 4
A String einlesen 1 Buchstabe fehlt Java Basics - Anfänger-Themen 2
J Nächster Buchstabe, aus IBM wird HAL Java Basics - Anfänger-Themen 2
G 1. Buchstabe eines JList eintrages verschieden farbig machen Java Basics - Anfänger-Themen 12
M String: beginnt mit Buchstabe oder Zahl? Java Basics - Anfänger-Themen 18
G eingabe - buchstabe wird in integerzahl umgewandelt Java Basics - Anfänger-Themen 5
halla zufälligen Buchstabe aus dem Alfabet auswählen Java Basics - Anfänger-Themen 5
M Buchstabe zu Unicode Java Basics - Anfänger-Themen 3
G Prüfen ob Zahl oder Buchstabe Java Basics - Anfänger-Themen 2
K Erster Buchstabe groß Java Basics - Anfänger-Themen 7
G prüfen, ob ein Zeichen ein Buchstabe ist Java Basics - Anfänger-Themen 6
W Double or Float zusammenrechnen Java Basics - Anfänger-Themen 15
I Review von euch erwünscht, double Rechnung falsch Java Basics - Anfänger-Themen 34
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
krgewb Double mit zwei Nachkommastellen Java Basics - Anfänger-Themen 2
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
Lion.King Fehler in double und int Java Basics - Anfänger-Themen 7
F java: incompatible types: possible lossy conversion from double to int Java Basics - Anfänger-Themen 1
J Double Variable und Addition Java Basics - Anfänger-Themen 2
F Double Ausgabe nicht wissenschaftlich Java Basics - Anfänger-Themen 16
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
Kotelettklopfer Variablen Double zwingen Ganzzahlen mit 2 Nachkommastellen auszugeben Java Basics - Anfänger-Themen 10
A possible lossy conversion from double to int Java Basics - Anfänger-Themen 5
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
J Transformation zweier Integer in ein Double Java Basics - Anfänger-Themen 26
N The method setSaldo(double) in the type Konto is not applicable for the arguments (int, int) Java Basics - Anfänger-Themen 2
C Konvertierung des int typs in den double typ für die Ausgabe mit Nachkommastellen Java Basics - Anfänger-Themen 4
V Erste Schritte Die Nuller bei double NICHT abschneiden Java Basics - Anfänger-Themen 4
Y Datentypen Double Division ungenau Java Basics - Anfänger-Themen 45
L Datentypen Rechnen und abrunden mit double Java Basics - Anfänger-Themen 7
M Writer für unterschiedliche Obj/inbt/double erstellen? Java Basics - Anfänger-Themen 1
F Character umwandeln als Double Werte Java Basics - Anfänger-Themen 8
M Double Wert nach n abschneiden ohne zu runden Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben