Foros del Web » Programación para mayores de 30 ;) » Java »

guardar en lista una palabra en java

Estas en el tema de guardar en lista una palabra en java en el foro de Java en Foros del Web. Hola buenas tengo un problemilla, estoy con un proyecto y necesito guardar la palabra en una lista al finalizar de tratarla. ejemplo pongo la palabra ...
  #1 (permalink)  
Antiguo 29/04/2011, 06:34
 
Fecha de Ingreso: febrero-2011
Ubicación: españa
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 0
Exclamación guardar en lista una palabra en java

Hola buenas tengo un problemilla, estoy con un proyecto y necesito guardar la palabra en una lista al finalizar de tratarla. ejemplo
pongo la palabra "ALA"
el programa me dice la letra A se ha reptido 2 veces
se inserto el caracter A con dos repeticiones
la letra L se ha repetido 1 vez
se inserto el caracter L con 1 repeticion y desde aqui quiero guardarla en una lista y que me ponga " la palabra ALA se ha guardado en la lista". Como podria hacerlo, este es mi codigo:



import java.io.IOException;
import java.io.*;

class NInternal {

Node[] next;
}

class NList {

String w;
NList[] next;
}

class Node {

char c;
NInternal[] i = new NInternal[10];
NList e = new NList();
}

public class Arboljd {

static public char getChar() throws IOException {
char c = (char) System.in.read();
input();
return c;
}

static public void input() throws IOException {
while ((char) System.in.read() != '\n');
}

static public int initNode(Node n, char l) throws IOException {
// Inicializar el nodo a insertar
n.e = null;
n.c = l;
return 0;
}

static public int insertNode(char l, int r, Node root) throws IOException {
// Inicializar el nodo a insertar
Node newNode = new Node();
if (initNode(newNode, l) != 0) {
System.out.println("Fallo al inicializar el Nodo\n");
} else {
// En caso de que sea el primer nodo a insertar.
if (root == null) {
System.out.println("Se va a insertar el nodo raiz \n");
root = newNode;
} else { // Cualquier otro nodo despues del raiz.
}
}
return r;
}

public static void main(String[] args) throws IOException {

char res;
Node root;
String s = "";
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(input);

do {
System.out.println("Inserte una palabra y pulse ENTER");
try {
s = reader.readLine();
} catch (Exception e) {
}
System.out.println("Escribiste: " + s + "\n");
int n[];
n = new int[27];
int tam = s.length();
int index = 0;
int max = 0;
char l;
do {
l = s.charAt(index);
switch (l) {
case 'a':
n[0]++;
if (max < 0) {
max = 0;
}
break;
case 'b':
n[1]++;
if (max < 1) {
max = 1;
}
break;
case 'c':
n[2]++;
if (max < 2) {
max = 2;
}
break;
case 'd':
n[3]++;
if (max < 3) {
max = 3;
}
break;
case 'e':
n[4]++;
if (max < 4) {
max = 4;
}
break;
case 'f':
n[5]++;
if (max < 5) {
max = 5;
}
break;
case 'g':
n[6]++;
if (max < 6) {
max = 6;
}
break;
case 'h':
n[7]++;
if (max < 7) {
max = 7;
}
break;
case 'i':
n[8]++;
if (max < 8) {
max = 8;
}
break;
case 'j':
n[9]++;
if (max < 9) {
max = 9;
}
break;
case 'k':
n[10]++;
if (max < 10) {
max = 10;
}
break;
case 'l':
n[11]++;
if (max < 11) {
max = 11;
}
break;
case 'm':
n[12]++;
if (max < 12) {
max = 12;
}
break;
case 'n':
n[13]++;
if (max < 13) {
max = 13;
}
break;
case '±':
n[14]++;
if (max < 14) {
max = 14;
}
break;
case 'o':
n[15]++;
if (max < 15) {
max = 15;
}
break;
case 'p':
n[16]++;
if (max < 16) {
max = 16;
}
break;
case 'q':
n[17]++;
if (max < 17) {
max = 17;
}
break;
case 'r':
n[18]++;
if (max < 18) {
max = 18;
}
break;
case 's':
n[19]++;
if (max < 19) {
max = 19;
}
break;
case 't':
n[20]++;
if (max < 20) {
max = 20;
}
break;
case 'u':
n[21]++;
if (max < 21) {
max = 21;
}
break;
case 'v':
n[22]++;
if (max < 22) {
max = 22;
}
break;
case 'w':
n[23]++;
if (max < 23) {
max = 23;
}
break;
case 'x':
n[24]++;
if (max < 24) {
max = 24;
}
break;
case 'y':
n[25]++;
if (max < 25) {
max = 25;
}
break;
case 'z':
n[26]++;
if (max < 26) {
max = 26;
}
break;
default:
break;
}
index++;
} while (index < tam);

System.out.println("La ultima letra es la numero: " + max);

for (index = 0; index <= max; index++) {
if (insertNode((char)n[index],index, root) != 0) {
System.out.println("Se inserto el caracter " + index + " con: " + n[index] + " repeticiones");
}
if (n[index] != 0) {
System.out.println("Cantidad de letras " + index + " en la frase es:" + n[index]);
}
}

//exter[mayor] = mayor;
System.out.println("┐Quiere insertar otra palabra? S/N");
res = getChar();

} while (res != ('n'));
}
}
  #2 (permalink)  
Antiguo 29/04/2011, 13:02
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: guardar en lista una palabra en java

Un consejo, los caracteres pueden ser convertidos en un int y viceversa.

Si utilizas ese valor como índice, puedes evitarte ese monstruoso switch y hacer uno más pequeño para los casos especiales como la ñ.

a(97)
b(98)
http://www.bbdsoft.com/ascii.html

array[(int) caracter - 97] += 1

Sobre tu pregunta, si sabes el número de palabras que quieres guardar, usa un array estático, si no usa uno dinámico.

http://download.oracle.com/javase/6/...ArrayList.html

Lo que no entiendo es que seas capaz de almacenar caracteres en un array, y que no veas que almacenar palabras se hace igual.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 30/04/2011, 14:07
 
Fecha de Ingreso: febrero-2011
Ubicación: españa
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 0
Exclamación Respuesta: guardar en lista una palabra en java

Cita:
Iniciado por Xerelo Ver Mensaje
Un consejo, los caracteres pueden ser convertidos en un int y viceversa.

Si utilizas ese valor como índice, puedes evitarte ese monstruoso switch y hacer uno más pequeño para los casos especiales como la ñ.

a(97)
b(98)
[url]http://www.bbdsoft.com/ascii.html[/url]

array[(int) caracter - 97] += 1

Sobre tu pregunta, si sabes el número de palabras que quieres guardar, usa un array estático, si no usa uno dinámico.

[url]http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html[/url]

Lo que no entiendo es que seas capaz de almacenar caracteres en un array, y que no veas que almacenar palabras se hace igual.



Hola Xerelo, gracias por contestar, en cuanto a tu primera aclaración, no entiendo muy bien lo que me dices, me dices que para quitar todo ese switch grandisimo ponga lo siguiente:
array[(int) caracter - 97] += 1
array[(int) caracter - 98] += 1
array[(int) caracter - 99] += 1
asi hasta
array[(int) caracter - 122] += 1
dices de esa manera? no seria igual de engorroso?
y en cuanto a la segunda pregunta, pues no se cuantas palabras no hay un numero fijo y maximo asi que seria un array dinamico, pero si te soy sincero no se como hacerlo, porque tengo las palabra que va siendo tratada y se va moviendo por el nodo y cuando llega al final del tratamiento de la palabra sale del nodo hacia una lista donde se guarda, y eso no lo veo, no se como hacerlo. podrias ponerme un ejemplo por favor en ambas cosas para ver como puedo hacerlo yo en mi practica?

Muchas Gracias de antemano
  #4 (permalink)  
Antiguo 30/04/2011, 14:33
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: guardar en lista una palabra en java

Cita:
me dices que para quitar todo ese switch grandisimo ponga lo siguiente:
array[(int) caracter - 97] += 1
array[(int) caracter - 98] += 1
array[(int) caracter - 99] += 1
Fíjate bien, yo digo que si 'a' es 97, 'b' es 98 y así sucesivamente, si yo quiero sumar un uno en la posición 0 de n[] porque apareció una 'a', no necesito crear un switch, ya 97 - 97 es cero. En el caso de la 'b' 98 - 97 es 1, que como ves coincide con tu switch.

El problema es la ñ, ya que por no aparecer en el abecedario inglés, si n (110) entonces o(111) mientras que ñ(241)

Por eso tu switch simplemente necesita diferenciar el caso de la ñ (si no tienes encuenta tildes) y el caso general

Caso general:
n[caracter-97]++

Cita:
cuando llega al final del tratamiento de la palabra sale del nodo hacia una lista donde se guarda, y eso no lo veo,;
No sé qué no ves, llegas al final del procesado de cada palabra y la guardas en ese array. Te he puesto un enlace al objeto que tienes que usar como array dinámico.

¿No sabes donde está el final de tu programa?¿No sabes como guardar una palabra en un aray dinámico?¿No sabes donde está la palabra?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 01/05/2011, 05:45
 
Fecha de Ingreso: febrero-2011
Ubicación: españa
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: guardar en lista una palabra en java

Cita:
Iniciado por Xerelo Ver Mensaje
Fíjate bien, yo digo que si 'a' es 97, 'b' es 98 y así sucesivamente, si yo quiero sumar un uno en la posición 0 de n[] porque apareció una 'a', no necesito crear un switch, ya 97 - 97 es cero. En el caso de la 'b' 98 - 97 es 1, que como ves coincide con tu switch.

El problema es la ñ, ya que por no aparecer en el abecedario inglés, si n (110) entonces o(111) mientras que ñ(241)

Por eso tu switch simplemente necesita diferenciar el caso de la ñ (si no tienes encuenta tildes) y el caso general

Caso general:
n[caracter-97]++


No sé qué no ves, llegas al final del procesado de cada palabra y la guardas en ese array. Te he puesto un enlace al objeto que tienes que usar como array dinámico.

¿No sabes donde está el final de tu programa?¿No sabes como guardar una palabra en un aray dinámico?¿No sabes donde está la palabra?

Hola buenos dias gracias por contestar, en cuanto a lo primero es una buena idea gracias, no voy a tratar la ñ, si pongo una palabra con ñ me da error porque no me la va a tratar. y en cuanto a lo ultimo, se donde esta el final del programa que es una vez termine de tratar la palabra lo que no se guardar la palabra en un array dinamico. no se como hacerlo, y el problema es que tengo que entregar este proyecto mañana podrias ponerme la sintaxis en base al codigo que te puse en el inicio? se que no deberías pero es una urgencia por favor.
Un saludo y gracias
  #6 (permalink)  
Antiguo 01/05/2011, 06:08
 
Fecha de Ingreso: febrero-2011
Ubicación: españa
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: guardar en lista una palabra en java

Estoy intentando hacer lo que me dices del array int, modificando el codigo que te puse pero no me sale, seria mucho pedir que lo hicieras tu? estoy un poco desesperado, el tiempo se me exa encima y claro tu manera es muy buena y mucho menos codigo, pero no se encajarla para que luego me haga lo que me hace el codigo que ya tengo, no domino mucho java soy principiante y se me acaba el tiempo. Gracias de antemano de verdad

Etiquetas: lista
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:49.