Java - Escribir un programa para formar una lista enlazada con las palabras de un archivo

 
Vista:
sin imagen de perfil

Escribir un programa para formar una lista enlazada con las palabras de un archivo

Publicado por Sam (3 intervenciones) el 11/10/2019 16:58:34
Ayuda en mi proyecto por favooooor, me urgeeee es para hoy a las 2 de la tardee:

Se tiene un archivo de texto de palabras separadas por un blanco o el carácter fin de línea. Escribir un programa para formar una lista enlazada con las palabras del archivo.
Una vez formada la lista se pueden añadir nuevas palabras o borrar alguna de ellas. al final el programa deberá escribir las palabras de la lista en el archivo.
Estoy utilizando java
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
sin imagen de perfil
Val: 52
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Escribir un programa para formar una lista enlazada con las palabras de un archivo

Publicado por Jorge (18 intervenciones) el 11/10/2019 17:25:16
Pues detectas donde hay espacios en blanco y vas contando cuantos existe una instrucción llamada: tokenizer que cuenta esos blancos

La clase StringTokenizer nos ayuda a dividir un string en substrings o tokens, en base a otro string (normalmente un carácter) separador entre ellos denominado delimitador.

Ejemplo tienes un archivo llamado: Archivo.txt con estos datos:

pedro esta en la casa
juan mira
pedro termina


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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.InputStreamReader;
import java.io.FileWriter;
import java.io.File;
import java.io.IOException;
import java.io.LineNumberReader;
import java.io. FileReader;
import java.util.Vector;
import java.util.StringTokenizer;
 
public class LecturaArchivo {
	static Vector vecNroToken;
	static int mayor=0;
	static int menor=0;
 
	public static void main(String [] args) {
		 vecNroToken= new Vector();
 
		leerArchivo();
 
	}
	public static void leerArchivo(){
 
		try {
			FileReader fr = new FileReader("C:/Mis documentos/LecturaArchivoJAVA/Archivo.txt");
			LineNumberReader lnr = new LineNumberReader(fr);
			String s;
			int lineNum;
			while((s = lnr.readLine()) != null) {
				System.out.println(lnr.getLineNumber() + ": " + s);
				contarToken(s);
            }
			lnr.close();
			fr.close() ;
			System.out.println("el mayor es:"+(mayor-1));
			System.out.println("el menor es:"+(menor-1));
        }
		catch (IOException e) {
        }
 
    }
	public static void contarToken(String strRegistro){
 
		StringTokenizer st = new StringTokenizer( strRegistro, " " );
		int nro=st.countTokens();
		System.out.println(nro);
		if(nro > mayor){
			mayor=nro;
        }
 
		if(nro < menor){
			menor = nro;
        }
 
 
    }
}
Si algo me escribes
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

Escribir un programa para formar una lista enlazada con las palabras de un archivo

Publicado por Sam (3 intervenciones) el 11/10/2019 18:08:53
Esto es lo que tengo en mi clase Lista

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
 
public class Lista {
 
	Nodo inicio;
    Nodo fin;
    int tam=0;
 
    public Lista()
    {
    	inicio=fin=null;
    }
 
    public boolean Vacia()
    {
    	return inicio==null;
    }
    public int Tamaño()
    {
    	return tam;
    }
 
    public void AgregarInicio(String valor)
    {
    	Nodo nuevo=new Nodo();
    	nuevo.setvalor(valor);
    	if(Vacia())
    	{
    		inicio=nuevo;
    	}else {
    		Nodo aux=inicio;
    		nuevo.setSiguiente(aux);
    		inicio=nuevo;
    	}
    }
    public void agregarNodoFinal(String valor)
    {
       Nodo nuevo=new Nodo();
       nuevo.setvalor(valor);
        if(Vacia()){
        inicio=nuevo;
        }else{
        	Nodo aux=inicio;
        	while(aux.getSiguiente()!=null){
        		aux=aux.siguiente;
        	}
        	aux.setSiguiente(nuevo);
        	tam++;
      }
    }
 
    public boolean Buscar(String referencia)
    {
    	Nodo aux=inicio;
    	boolean encontrado=false;
    	while (aux!=null&&encontrado!=true){
    		if(referencia==aux.getvalor()){
    			encontrado=true;
    		}
    		else{
    			aux=aux.getSiguiente();
    		}
    	}
    	return encontrado;
    }
 
    public void Mostrar()
    {
    	if(Vacia()){
    		Nodo aux=inicio;
    		int i=0;
 
    		while(aux!=null){
    			System.out.print("["+ aux.getvalor()+"] --->");
    			aux=aux.getSiguiente();
    		}	i++;
    	}
    }
 
    public void Eliminar()
    {
 
    	if (Vacia()){
    		System.out.println("No se puede eliminar :c");
    	}
    	else {
    		Nodo aux = inicio;
    		Nodo temp = inicio.getSiguiente();
    		while(temp.getSiguiente()!=null){
     			temp=temp.getSiguiente();
     			aux=aux.getSiguiente();
 
 
 
     		}
     		aux.setSiguiente(null);
    	}
 
    }
    public void imprimir()
    {
        Nodo aux=inicio;
        while(aux!=null){
        System.out.println(aux.getvalor());
        aux=aux.getSiguiente();
       }
    }
 
    public String leerArchivo(String path)
    {
        String total="";
        try {
        	FileReader fr=new FileReader(new File(path));
            BufferedReader br=new BufferedReader(fr);
 
            String linea="";
            while(  (linea=br.readLine())!=null){
            total=total+linea+"\n";
        }
      } catch (FileNotFoundException e) {
 
        System.out.println("Problemas de archivo: "+e.getMessage());
        } catch (IOException e) {
        	System.out.println("Problemas en la lectura del archivo: "+e.getMessage());
      }
      return total;
      }
 
      public String escribirArchivo(String linea)
      {
        FileWriter fichero = null;
        PrintWriter pw = null;
        try
        {
            fichero = new FileWriter("texto.txt", true);
            pw = new PrintWriter(fichero);
 
                pw.println(linea);
 
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
           try {
 
           if (null != fichero)
              fichero.close();
           } catch (Exception e2) {
              e2.printStackTrace();
           }
        }
        return "Se ha escrito en el archivo";
        }
 
        public Lista separar(String total)
        {
        	System.out.println(total);
            Lista coleccion=new Lista();
            StringTokenizer st = new StringTokenizer(total, " \n;");
            while (st.hasMoreTokens()) {
            String palabra = st.nextToken();
            coleccion.agregarNodoFinal(palabra);
       }
       return coleccion;
   }
 
 
}
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
Val: 52
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Escribir un programa para formar una lista enlazada con las palabras de un archivo

Publicado por Jorge (18 intervenciones) el 11/10/2019 18:14:06
Pero ojo que esa variable booleana Vacia la tiene que estar limpiando y no veo en ninguna parte donde la limpias.

Siempre que defines una variable como boolean automáticamente queda en false que es el valor por default, si en algún momento pasa a ser true la debes devolver a false, porque sino siempre queda como True y el programa no te responde adecuadamente, una cosas es NULL y otra un true/false
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

Escribir un programa para formar una lista enlazada con las palabras de un archivo

Publicado por Sam (3 intervenciones) el 11/10/2019 18:18:16
es por eso que me marca excepcion en el main??
la verdad ya no se que hacer :( no me sale
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
Val: 52
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Escribir un programa para formar una lista enlazada con las palabras de un archivo

Publicado por Jorge (18 intervenciones) el 11/10/2019 18:24:52
Es que tú al parecer estas devolviendo un null en un boolean, un boolean nunca va a ser null o es true o es false
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