Datentypen Datentyp eines Werts in einer Textdateizeile abfragen und ändern

Randomat2000

Mitglied
Hi folgendes: Ich will in einer Methode eine Textdatei durchlaufen lassen und die Datentypen aller Werte die dort eingelesen wurden ändern. Dazu fehlt mir noch die Abfrage, z.B. wenn es ein Int-Wert ist soll er in Float geändert werden usw.

Hier mein aktueller Programmstandpunkt:

Java:
import java.io.*;

public class Textleser {
	
	String s;
	int i;
	char c;
	float f;
	
	public void textDateilesen()
	{
		try
		{
            BufferedReader reader = new BufferedReader (new FileReader("Textdatei.txt"));
            s = null;
            
            while ((s = reader.readLine()) != null)
            {
            	if ()	//Wenn der ursprünglich eingelesene Wert Int ist, ändere ihn in float.
            	{
            		f = new Float(reader.readLine()).floatValue();
            	}
            		
            	else if ()	//Wenn der ursprünglich eingelesene Wert Char ist, ändere ihn in int.
            	{
            		i = new Integer(reader.readLine()).intValue(); 
           		}
           	}	
		}
    		
		catch (FileNotFoundException e)
		{
    		System.out.println("IOERROR: Datei nicht gefunden:\n");
    			e.printStackTrace();
    	} 
    	
		catch (IOException e)
    	{
    		System.out.println("IOERROR: " + e.getMessage() + "\n");
    		e.printStackTrace();
    	}
	}
}
 
Probiers mal mit

Java:
if (s instanceof Integer) {
  i = new Integer(reader.readLine()).intValue(); 
}
 
instanceof macht hier keinen Sinn. Der Reader liest alles als String ein, damit ist die Zeile an sich auch ein String.

Exakt bestimmt lässt sich das nur schwer...was du tun kannst wäre folgendes:

Java:
if("true".equalsIgnoreCase(s) || "false".equalsIgnoreCase(s)){
   boolean val = Boolean.parseBoolean(s);
} else {
   try {
      Double.parseDouble(s);
   } catch(NumberFormatException nfe) {
      isDouble = false;
   }
   // weitere Checks, z.B: parseDate ...
}
 
Sorry aber wozu die zwei Zeilen?

Java:
if("true".equalsIgnoreCase(s) || "false".equalsIgnoreCase(s)){
   boolean val = Boolean.parseBoolean(s);

und
Code:
 isDouble
müsst ich ja dann noch als Methode schreiben oder? weil mich Java da wieder anmotzt 😀
 

Neue Themen


Zurück
Oben