Java - uso de bucles, contadore, acumuladores y banderas

 
Vista:

uso de bucles, contadore, acumuladores y banderas

Publicado por maria (11 intervenciones) el 20/10/2015 19:54:02
Hola, soy nueva programando y por ahora he creado un programa mediante el bucle do-while y me siento algo perdida, me faltan estos dos últimos pasos:

Modificar el programa previo para que se cuente el n´umero de letras
a que aparecen en las frases le´ıdas y se imprima al final esa cantidad.

Modificar el programa previo para mostrar finalmente la media de
longitudes de las frases introducidas, as´ı como si alguna de ellas tiene
una longitud mayor de 32 caracteres.

Si me dieseis alguna idea de cómo hacerlo os lo agradecería mucho!!!
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
Imágen de perfil de Alberto
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

uso de bucles, contadore, acumuladores y banderas

Publicado por Alberto (303 intervenciones) el 20/10/2015 22:44:49
Hola...

Serías tan amable de proporcionar el código que has desarrollado hasta el momento, de esa manera podemos brindarte una solución en base a tu avance.

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos. Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Krlos

uso de bucles, contadore, acumuladores y banderas

Publicado por Krlos (54 intervenciones) el 21/10/2015 00:08:31
Este código cuenta cuantas letras a tiene la cadena, puedes ampliarlo el código...

substring-----> permite extraer subcadenas de una cadena principal...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args) {
       String texto="abaacdefgh";
       int c=0;
       String letra="";
       for(int x=0;x<texto.length();x++){
          letra=texto.substring(x,x+1);
           switch(letra){
               case "a":
               c=c+1;
                   break;
           }
 
       }
        System.out.println("a "+c);
    }

Cualquier duda me puedes escribir a: [email protected]

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

uso de bucles, contadore, acumuladores y banderas

Publicado por maria (11 intervenciones) el 21/10/2015 16:18:14
Hola!, esto es lo que tengo..

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
import java.util.*;
 
 
public class Ejercicio6{
    public static void main(String[]args){
        Scanner tec = new Scanner(System.in);
        String frase, frase2;
        int ncarac1, ncarac2;
        frase2 = "";
 
 
               do{
                   System.out.println("Dame una frase ");
                   frase = tec.nextLine();
                   ncarac1 = frase.length();
 
                   ncarac2= frase2.length();
 
                         if(ncarac2<ncarac1){
                             frase2 = frase;
                            }
                            if (ncarac2==ncarac1){
                                if (frase2.compareTo(frase) > 0){ //orden alfabetico de menor a mayor
                                    frase2 = frase;
                                }
                                if(frase2.compareTo(frase) < 0){ //orden alfabetico de menor a mayor
                                    frase2 = frase2;
                                }
 
                            }
 
                        } while ( ncarac1 > 0);
                        System.out.println("la frase mas larga es " + frase2);
 
                    }
                }
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

uso de bucles, contadore, acumuladores y banderas

Publicado por maria (11 intervenciones) el 21/10/2015 16:15:13
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
import java.util.*;
 
 
public class Ejercicio6{
    public static void main(String[]args){
        Scanner tec = new Scanner(System.in);
        String frase, frase2;
        int ncarac1, ncarac2;
        frase2 = "";
 
 
               do{
                   System.out.println("Dame una frase ");
                   frase = tec.nextLine();
                   ncarac1 = frase.length();
 
                   ncarac2= frase2.length();
 
                         if(ncarac2<ncarac1){
                             frase2 = frase;
                            }
                            if (ncarac2==ncarac1){
                                if (frase2.compareTo(frase) > 0){ //orden alfabetico de menor a mayor
                                    frase2 = frase;
                                }
                                if(frase2.compareTo(frase) < 0){ //orden alfabetico de menor a mayor
                                    frase2 = frase2;
                                }
 
                            }
 
                        } while ( ncarac1 > 0);
                        System.out.println("la frase mas larga es " + frase2);
 
                    }
                }
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

uso de bucles, contadore, acumuladores y banderas

Publicado por Lawliet (303 intervenciones) el 21/10/2015 17:51:30
Hola...

Ejecutando tu programa, observe que cada que le pongo alguna palabra sin importar cual, se me cicla, no se si eso es normal o ya venias con ese error.

Estamos al pendiente de tus 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

uso de bucles, contadore, acumuladores y banderas

Publicado por maria (11 intervenciones) el 21/10/2015 17:59:21
El ejercicio anterior me pedía leer varias frases hasta la introduccion de la frase vacia y que al final se imprima por pantalla la
frase mas larga
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

uso de bucles, contadore, acumuladores y banderas

Publicado por Lawliet (303 intervenciones) el 21/10/2015 18:19:24
Hola...

"Modificar el programa previo para que se cuente el número de letras a que aparecen en las frases leídas y se imprima al final esa cantidad."

Con la definición del texto anteriormente entiendo que necesitas el total de las letras en cada palabra que voy ingresando y al final mostrar el total de esas letras "a" de cada palabra, es correcto, o simplemente de la palabra más larga?
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

uso de bucles, contadore, acumuladores y banderas

Publicado por maria (11 intervenciones) el 21/10/2015 18:43:31
Sí, de todas. 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

uso de bucles, contadore, acumuladores y banderas

Publicado por Lawliet (303 intervenciones) el 21/10/2015 20:27:11
Hola...

Espero te sea de utilidad...

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
// Creamos una lista del tipo "String" que es el que almacenara todas nuestras palabras
List<String> listPalabras = new ArrayList<String>();
// Caractere a comparar
char letra = 'a';
// Sumatoria de longitudes
Integer totalLongitudes = 0;
Integer totalPalabras = 0;
float media = 0.00f;
// Formato decimal al resultado final
DecimalFormat df = new DecimalFormat("##0.00");
 
Scanner tec = new Scanner(System.in);
String frase, frase2;
int ncarac1, ncarac2;
frase2 = "";
 
do {
	System.out.print("Dame una frase: ");
	frase = tec.nextLine();
	// Agregamos todas las palabras que el usuario valla ingresando
	listPalabras.add(frase);
	// Realizamos la suma de las longitudes
	totalLongitudes += frase.length();
	ncarac1 = frase.length();
	ncarac2 = frase2.length();
	if (ncarac2 < ncarac1) {
		frase2 = frase;
	}
	if (ncarac2 == ncarac1) {
		if (frase2.compareTo(frase) > 0) {
			frase2 = frase;
		}
//				if (frase2.compareTo(frase) < 0) {
//					frase2 = frase2;
//				}
	}
} while (ncarac1 > 0);
System.out.println("La frase mas larga es: " + frase2);
 
System.out.println();
System.out.println("Numero de letras \'a\' por palabra:");
// Recorremos nuestra lista de palabras
for(int i = 0; i < listPalabras.size(); i++){
	if (!listPalabras.get(i).isEmpty()){
		int conta = 0;
		// Separamos los caracteres por cada elemento de nuestra lista con el metodo "toCharArray"
		// Estos caracteres son almacenados en un arreglo del tipo "char" que es lo que nos devuelve el metodo mencionado anteriormente
		char[] caracteres = listPalabras.get(i).toCharArray();
		// Recorremos el arreglo con nuestros caracteres separados por cada palabra
		for(int j = 0; j < caracteres.length; j++){
			// Comparamos nuestro caracter por defecto "a" por nuestro carcater separado
			if (letra == caracteres[j]){
				// Si son iguales, aumentamos nuestro contador
				conta++;
			}
		}
		// Imprimos el resultado
		System.out.println("Palabra: " + listPalabras.get(i) + " Letras (a): " + conta);
	}
}
 
System.out.println();
System.out.println("Media de longitudes de las palabras:");
totalPalabras = listPalabras.size() - 1;
media = Float.parseFloat(totalLongitudes.toString()) / Float.parseFloat(totalPalabras.toString());
System.out.println("La media de las palabras es: " + df.format(media));
 
System.out.println();
System.out.println("Palabras mayores a 32 caracteres:");
for (int i = 0; i < listPalabras.size(); i++){
	if(listPalabras.get(i).length() >= 32){
		System.out.println(listPalabras.get(i));
	}
}

Supongo que es importante mencionarte algunos puntos para aclarar el código
1.- Las tres líneas que comente de tu código original, son innecesarias ya que al no cumplirse la validación de arriba pues tu variable va a tener el valor correspondiente, por lo que no es necesario asignarlo nuevamente. Es como tener una variable que tiene como valor "Hola" y nuevamente le pasas el valor "Hola", es innecesario.
2.- La variable "conta" la declaramos en el primer ciclo ya que necesitamos hacer un conteo para cada palabra; es decir, palabra1 tiene su contador, palabra2 tiene su contador, etc.

Obviamente, la forma de presentarlo así como la misma lógica la puedes cambiar, después de todo esta es la forma en que se me ocurrió hacerlo a mi, pero cada persona tiene su propia razón.

Creo que lo demás no tiene necesidad de explicación ya que son elementos básicos, sin embargo, con gusto puedes contactarme (Mi correo esta a lado de mi nombre, puedes agregar a Skype sin pena) si tienes alguna inquietud

Sin mas que comentar, estamos al pendiente de tus comentarios. Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar