Calcular el valor (ASCII) de cada palabra(suma del valor de las letras) de una frase dentro de un array

publicado por: Anonymous

Estoy haciendo un ejercicio que se trata de calcular el valor de cada palabra de una frase que me introduce el usuario. Quería saber si podríais ayudarme a saber cómo hacerlo, gracias!
Lo que quiero hacer es calcular el valor de una palabra, o lo mismo, calcular la suma de cada letra en ascii.

Me he echo esto pero no sé si estoy empezando la serpiente por el cascabel o está todo mal, pero sé que me falta lo que estoy pidiendo de calcular el valor de una palabra, o lo mismo, calcular la suma de cada letra en ascii.

public class ejercicio6 {

    char[] pal;    
    Paraula p = new Paraula(); //Clase que me define una palabra
    Scanner scn = new Scanner(System.in);
    private static char[] frase = null;
    private static int indice;

    LT lt = new LT(); //Clase para poder leer char, lineas, reales y enteros

    public void inicio(){ 
        int n = 0;
        String frase = new String(); //String donde metemos la frase
    }

    public static void main(String[] args) { //Main donde inicializamos el juego
        ejercicio6 at = new ejercicio6();
        at.inicio();
    }

    public static char leerCarTeclado() { //esta clase sirve para leer del teclado
        char res = '.';
        if (frase != null) {
            res = frase[indice++];
        }
        return 0;
    }

        public int ContarPesoPalabra() {
        String aux;
        aux = new LT().llegirLinia(); //Lee el string
        pal = aux.toCharArray(); //Convierte la cadena en un array de chars
        int S = 0; //Contador de la suma de lo que vale cada letra en ASCII
        int n; //Numero con el que tiene que ser más grande la suma de la palabra
        n = scn.nextInt(); //Leemos el numero que nos entra el usuario
        if (S != '.') { //Si al recorrer el Array no encontramos un . seguimos
            for (int i = 0; i < pal.length; i++) { //lee todo el array
                S = S + pal[i]; //Suma el contador
                if (S >= n && S != espai) { //Si la suma de la palabra en ASCII o hay espacio, 
                                            //no sigas, si no es asi, imprime la palabra
                    System.out.println(S);
                }

            }
        }
        return 0;
    }
}

Soy nuevo en esto, y no sé si lo estoy haciendo bien.

solución

Si lo que quieres es sumar el valor ASCII de las letras de una cadena:

    String cadena = "¡Bienvenido a la comunidad!"; //simple variable para probar
    int contador = 0; //esta variable contará la suma del valor ASCII de cada letra
    for (int i=0; i < cadena.length(); i++){
        contador = contador + cadena.codePointAt(i); 
    }
    System.out.println(contador);

El método .codePointAt() devuelve el código ASCII de un carácter en
concreto. El carácter será el que coincida con el índice que se pasa
como parámetro al método.

También puedes utilizar la siguiente forma:

(int)cadena.charAt(i);

Dado que charAt devuelve el caracter en la posición que coincida con
el índice, al indicar que hay que tratar el valor como (int) /integer/
el valor es convertido a ASCII.

En el caso de que sea un arrays de palabras en las que no hay espacios entre las palabras(si hay espacios contará el valor ASCII del espacio):

String[] array = {"¡", "Bienvenido", "a", "la", "comunidad", "!"};
int contador;
for(int j=0; j < array.length; j++) {
    contador=0;
    for (int i=0; i < array[j].length(); i++){
        contador = contador + (int)array[j].charAt(i);
    }
    System.out.println(array[j]+" en ASCII el valor es: "+contador);
}

En caso de que puedan haber espacios y no los quieras contar has de poner un if dentro del bucle:

for (int i=0; i < array[j].length(); i++){
    if(array[j].charAt(i)!=" "){ //si no es un espacio sumara su valor ASCII
        contador = contador + (int)array[j].charAt(i);
     }
}
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *