values in a hashmap

Asked

Viewed 31 times

0

Guys, I have this code, it takes a sentence and counts how long it took to type a whole sentence. since each letter has a value. but I have to do this for 10 sentences. and I’m only able to do it if I repeat code, for example, I put: frase1, frase2 .... up to phrase 10 and I repeat all the rest of code, ie one for each sentence, one Count for each phrase... I want to know if there is how to reuse the code for the 10 sentences, without creating 10 "for" and 10 Count?

package pacote;

import java.util.HashMap;

public class ContagemMelhoria2 {

public static void main(String[] args) {
    HashMap<String, Integer> hashLetras=new HashMap<String, Integer>();

    hashLetras.put("A", 2); hashLetras.put("E", 3); hashLetras.put("O", 3); hashLetras.put("S", 4); hashLetras.put("R", 4); 

    hashLetras.put("I", 4); hashLetras.put("N", 5); hashLetras.put("D", 5); hashLetras.put("M", 5); hashLetras.put("U", 5); 

    hashLetras.put("T", 6); hashLetras.put("C", 6); hashLetras.put("L", 6); hashLetras.put("P", 6); hashLetras.put("V", 7); 

    hashLetras.put("G", 7); hashLetras.put("H", 7); hashLetras.put("Q", 7); hashLetras.put("B", 8); hashLetras.put("F", 8); 

    hashLetras.put("Z", 8); hashLetras.put("J", 9); hashLetras.put("X", 9); hashLetras.put("K", 9); hashLetras.put("W", 10);

    hashLetras.put("Y", 10);hashLetras.put(" ", 6);//espaco


    String frase1 = "TECNOLOGIA ENVOLVE SERVICO RECURSOS ESTRATEGIA";

    int count=0;

    for(int i=0; i<frase1.length();i++){

        if( i<(frase1.length()-1) && frase1.charAt(i)=='Q' && frase1.charAt(i+1)=='U'){
             count = count+8;
             i++;
        }else{
            String c = frase1.charAt(i)+ "";
            count = count+hashLetras.get(c);
        }
    }

    System.out.println("O tempo foi de: "+count);
}

}

1 answer

1


Hi! You can create an auxiliary method to do this for you.

Follow an example:

public static void main(String[] args) {

        String frase1 = "TECNOLOGIA ENVOLVE SERVICO RECURSOS ESTRATEGIA";
        String frase2 = "TECNOLOGIA ENVOLVE SERVICO RECURSOS ESTRATEGIA E AERODINAMICA";

    System.out.println(contaLetras(frase1));
    System.out.println(contaLetras(frase2));

    }

    private static String contaLetras(String frase) {
        HashMap<String, Integer> hashLetras=new HashMap<String, Integer>();

        hashLetras.put("A", 2); hashLetras.put("E", 3); hashLetras.put("O", 3); hashLetras.put("S", 4); hashLetras.put("R", 4); 
        hashLetras.put("I", 4); hashLetras.put("N", 5); hashLetras.put("D", 5); hashLetras.put("M", 5); hashLetras.put("U", 5); 
        hashLetras.put("T", 6); hashLetras.put("C", 6); hashLetras.put("L", 6); hashLetras.put("P", 6); hashLetras.put("V", 7); 
        hashLetras.put("G", 7); hashLetras.put("H", 7); hashLetras.put("Q", 7); hashLetras.put("B", 8); hashLetras.put("F", 8); 
        hashLetras.put("Z", 8); hashLetras.put("J", 9); hashLetras.put("X", 9); hashLetras.put("K", 9); hashLetras.put("W", 10);
        hashLetras.put("Y", 10);hashLetras.put(" ", 6);//espaco

        int count=0;

        for(int i=0; i<frase.length();i++){

            if( i<(frase.length()-1) && frase.charAt(i)=='Q' && frase.charAt(i+1)=='U'){
                 count = count+8;
                 i++;
            }else{
                String c = frase.charAt(i)+ "";
                count = count+hashLetras.get(c);
            }
        }

        return "O tempo foi de: "+count;
    }

I hope I’ve helped.

Adjusting as your doubt:

public static void main(String[] args) {

    String frase1 = "TECNOLOGIA ENVOLVE SERVICO RECURSOS ESTRATEGIA";
    String frase2 = "TECNOLOGIA ENVOLVE SERVICO RECURSOS ESTRATEGIA E AERODINAMICA";

    Integer tempoFrase1 = contaLetras(frase1);
    Integer tempoFrase2 = contaLetras(frase2);

    System.out.println("O tempo da frase 1 foi de: " + tempoFrase1);
    System.out.println("O tempo da frase 2 foi de: " + tempoFrase2);
    System.out.println("O tempo total foi de: " + (tempoFrase1+tempoFrase2));

}

private static Integer contaLetras(String frase) {
    HashMap<String, Integer> hashLetras=new HashMap<String, Integer>();

    hashLetras.put("A", 2); hashLetras.put("E", 3); hashLetras.put("O", 3); hashLetras.put("S", 4); hashLetras.put("R", 4); 
    hashLetras.put("I", 4); hashLetras.put("N", 5); hashLetras.put("D", 5); hashLetras.put("M", 5); hashLetras.put("U", 5); 
    hashLetras.put("T", 6); hashLetras.put("C", 6); hashLetras.put("L", 6); hashLetras.put("P", 6); hashLetras.put("V", 7); 
    hashLetras.put("G", 7); hashLetras.put("H", 7); hashLetras.put("Q", 7); hashLetras.put("B", 8); hashLetras.put("F", 8); 
    hashLetras.put("Z", 8); hashLetras.put("J", 9); hashLetras.put("X", 9); hashLetras.put("K", 9); hashLetras.put("W", 10);
    hashLetras.put("Y", 10);hashLetras.put(" ", 6);//espaco

    int count=0;

    for(int i=0; i<frase.length();i++){

        if( i<(frase.length()-1) && frase.charAt(i)=='Q' && frase.charAt(i+1)=='U'){
             count = count+8;
             i++;
        }else{
            String c = frase.charAt(i)+ "";
            count = count+hashLetras.get(c);
        }
    }

    return count;
}
  • 1

    if it helped? you have no idea rsrs. Thank you very much

  • Just one question, if I want to add up all these times: I tried it this way, but it didn’t work. sum = sum + Count; System.out.println("Eee"+ sum);

  • 1

    You change the method contaLetters from String to Integer, return only Count and remove the text. In the main method, you do the account. : ) I edited the answer p/ you check.

  • I’m just on the floor with so much intelligence. Thank you again

Browser other questions tagged

You are not signed in. Login or sign up in order to post.