Java - Archivos de texto planos

 
Vista:
sin imagen de perfil

Archivos de texto planos

Publicado por juan jose (25 intervenciones) el 20/11/2016 16:44:44
Buenos dias, nesecito realizar un interprete que lea archivos de texto plano, y ejecute las instrucciones de dicho achivo, bueno yo ya fui sacando linea por linea y cada linea la partí con el metodo split y eso me genera un arreglo de los elementos de la linea, pero nose como asignar el a = 4 en el codigo, por ejemplo si en el archivo de texto plano dice:

" a = 4
r1 = a *4
"
Alguien seria tan amable de ayudarme con esto, muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Archivos de texto planos

Publicado por Tom (1831 intervenciones) el 20/11/2016 20:10:23
Yo no sé qué tiene que ver el título de tu pregunta con lo que en realidad necesitas (evaluar expresiones).
Sin saber más, podrías hacer algo como:

1
2
3
4
5
6
7
8
9
HashMap<String, Integer> vars = new HashMap();
...
...
String tokens[] = split(linea);
if("=".equals(linea[1])) {
  vars.put(linea[0], Integer.parseInt(linea[2]));
else ...
...
endif

Por supuesto, comprobando posibles errores y todo eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Archivos de texto planos

Publicado por juan jose (25 intervenciones) el 21/11/2016 03:44:57
Muchas gracias por el aporte, pero será que me podrias explicar como funciona la primera linea, muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Archivos de texto planos

Publicado por Lawliet (303 intervenciones) el 20/11/2016 22:15:42
Hola...

No entiendo bien tu proceso o por lo menos siento que esta incompleta la explicación de tu problema.

Te proporciono un ejemplo de la lectura de archivos de texto plano...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public void leerArchivo(){
	FileReader fr = null;
	BufferedReader br = null;
	String linea = "";
 
	try {
		fr = new FileReader(new File("C:\\Users\\QUALITY\\Documents\\practicas.txt"));
		br = new BufferedReader(fr);
 
		while((linea = br.readLine()) != null){
			System.out.println(linea);
		}
 
 
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	} finally {
		try {
			if(br != null){
				br.close();
				fr.close();
			}
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
	}
}

Supongo que solamente te hará falta agregar la lógica para partir las líneas leídas.

Sin más que comentar, quedo al pendiente de cualquier duda y/o comentario.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Archivos de texto planos

Publicado por juan jose (25 intervenciones) el 21/11/2016 03:42:15
Muchas gracias, pero en realidad cargar archvos de texto, no es mi problema, mi problema consiste en que tengo que realizar las instrucciones que esten en el archivo de texto, pero cuando voy a leer la primera o la segunda... etc linea, no se como procesar por ejemplo:

x = 100
r1 = x +10
....

entonces mi gran pregunta es como hago para pasar eso que esta en la primera linea y definirlo en el codigo y despues de realizar eso, empezar a utilizar esa variable para realizar las siguientes instrucciones, espero me haya hecho entender muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Archivos de texto planos

Publicado por Lawliet (303 intervenciones) el 21/11/2016 05:49:54
Hola...

Bueno, más que nada siento que no necesitas pasar toda la línea como tal a una variable; es decir, lees la primer línea y el valor de "x = 100" lo necesitas guardar en una variable. Si para ti es importante guardar la línea exactamente como esta entonces tendrías que guardar cada línea en un String, sin embargo, creo estar seguro que a ti no te importa tanto la parte de "X = " sino la parte del número; es decir, te importa el 100 y así sucesivamente con cada línea que vallas leyendo, más que importarte la línea tal cual te importa el valor y/o operación que se esta realizado.

Tomando esas dos líneas de tu archivo de texto como base, creo que el código que tu necesitas sería algo parecido al siguiente...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
FileReader fr = null;
BufferedReader br = null;
String linea = "";
 
try {
	fr = new FileReader(new File("C:\\Users\\QUALITY\\Documents\\practicas.txt"));
	br = new BufferedReader(fr);
	int x = 0;
	int r1 = 0;
 
	while((linea = br.readLine()) != null){
		if(!linea.contains("+") && !linea.contains("-") && !linea.contains("/") && !linea.contains("*")){
			x = Integer.parseInt(linea.substring(linea.indexOf("=") + 2));
		} else {
			if (linea.contains("+")){
				String cadenaSuma = linea.substring(linea.indexOf("=") + 2);
				if(cadenaSuma.contains("x")) {
					cadenaSuma = cadenaSuma.replace("x", String.valueOf(x));
				}
				String[] valores = cadenaSuma.split("\\+");
				for(int i = 0; i < valores.length; i++){
					r1 += Integer.parseInt(valores[i].trim());
				}
			}
		}
	}
 
	System.out.println("Total R1: " + r1);
} catch (FileNotFoundException e) {
	e.printStackTrace();
} catch (IOException e) {
	e.printStackTrace();
} finally {
	try {
		if(br != null){
			br.close();
			fr.close();
		}
	} catch (IOException ioe) {
		ioe.printStackTrace();
	}
}

Esto es algo sumamente sencillo, ya que si no me equivoco en tu archivo de texto debes tener sumas, restas, divisiones y multiplicaciones, el ejemplo que te proporciono únicamente hace referencia a una suma, por lo que sería cuestión de analizar el archivo de texto para así hacer un algoritmo de acuerdo al problema.

Sin más que comentar, quedo al pendiente de las dudas y/o comentarios.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 23
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Archivos de texto planos

Publicado por Alejandro (7 intervenciones) el 22/11/2016 17:16:48
Ante todo saludos a todos los colegas del foro, esto se me parece mucho a teorías de compilación, a ver si me hago entender, lo más sencillo que se me ocurre hacer en este caso, es diseñar una gramática que genere el lenguaje de las instrucciones que tiene el archivo de texto, luego hacer un analizador lexicográfico, y luego un analizador sintáctico para validar el lenguaje de instrucciones que pudiera tener el archivo, a lo mejor se hace complejo, pero creo que es el mejor camino, les propongo el análisis lexicográfico recursivo descendente y análisis sintáctico para garantizar la correcta escritura de las operaciones, aquí les dejo algunos enlaces para que analices si te es factible esta vía para resolver tu problema.

http://www.lawebdelprogramador.com/codigo/Java/1577-Analizador-Lexico.html
http://www.rdebug.com/2010/05/java-analizador-lexico-y-sintactico.html
https://lsi.ugr.es/curena/doce/pl/lyj/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar