Jump to content
gabrielajsampa

como pegar valores específicos através de hashmap

Recommended Posts

 

Gente, tenho esse código. O que ele faz: ele serve para contar quantos segundos eu demoro pra digitar uma frase, nesse caso, 'tecnologia'. Porém, como a intenção é imitar um teclado, esse teclado vai bloquear algumas letras que pelo nosso dicionário não tem como ficar juntas, ou melhor, não tem como formar uma palavra. Por exemplo, ao digitar 'Z', é super lógico que o teclado tenha que bloquear a letra 'B', já que vai ser difícil encontrar uma palavra que depois do 'Z' venha o 'B'.

No caso do código está a palavra 'TECNOLOGIA' e esse teclado deveria bloquear algumas teclas para cada letra específica e consequentemente não "passar" por essas letras bloqueadas. Por exemplo: ao digitar a letra 'T' deve-se deixar "ativas", ou melhor, contáveis, apenas as letras: A,C,E,H,I,O,P,R,S,U,V,W. A letra 'E': todas as letras devem ficar ativas; A letra 'C': deve-se deixar "ativas" apenas as letras: A,C,E,F, H,I,K,L,,M,N,O,S,T,U; A letra 'N': deve-se deixar "ativas" apenas as letras:A,E,I,O; A letra 'O': deve-se deixar "ativas" apenas as letras:C,O,L,P,R; A letra 'L': deve-se deixar "ativas" apenas as letras:O; A letra 'O': deve-se deixar "ativas" apenas as letras:G; A letra 'G':deve-se deixar "ativas" apenas as letras:I; A letra 'I': deve-se deixar "ativas" apenas as letras:A;

Eu gostaria de saber como pode ser implementado ou se é possível implementar, se é possível fazer essa contagem!?

 

import java.util.HashMap;

public class ContagemAutoComplete {

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

    hashLetras.put("A", 2); hashLetras.put("B", 3); hashLetras.put("C", 4); hashLetras.put("D", 5); hashLetras.put("E", 3);

    hashLetras.put("F", 4); hashLetras.put("G", 5); hashLetras.put("H", 6); hashLetras.put("I", 4); hashLetras.put("J", 5);

    hashLetras.put("K", 6); hashLetras.put("L", 7); hashLetras.put("M", 8); hashLetras.put("N", 9); hashLetras.put("O", 5);

    hashLetras.put("P", 6); hashLetras.put("Q", 7); hashLetras.put("R", 8); hashLetras.put("S", 9); hashLetras.put("T", 10); 

    hashLetras.put("U", 6); hashLetras.put("V", 7); hashLetras.put("W", 8); hashLetras.put("X", 9); hashLetras.put("Y", 10);

    hashLetras.put("Z", 11); hashLetras.put(" ", 7); //ESPACO

    String teste="TECNOLOGIA";

    int count=0;

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

        if( i<(teste.length()-1) && teste.charAt(i)=='Q' && teste.charAt(i+1)=='U'){
             count = count+7;
             i++;
        }else{
            String c = teste.charAt(i)+ "";
            System.out.println("LETRA:"+ c);
            count = count+hashLetras.get(c);
            System.out.println("NUMERO DA LETRA:"+ hashLetras.get(c));
        }
    }

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Kleiton44
      '''Ler duas matrizes A e B, cada uma com uma dimensão para sete elementos. Construir uma matriz C de duas dimensões. A primeira coluna deve ser formada pelos elementos da matriz A e a segunda coluna pelos elementos da matriz B. Apresentar a matriz C  ERRO:   A[x][y] = int(A[x][y]) IndexError: list index out of range''' A = [[0, 0, 0, 0, 0, 0, 0]] B = [[0, 0, 0, 0, 0, 0, 0]] C = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]] for x in range(1): A[x] = input().split(' ') for x in range(1): B[x] = input().split(' ') for x in range(7): for y in range(2): A[x][y] = int(A[x][y]) B[x][y] = int(B[x][y]) C[y] = A[x], B[x] for x in range(7): for y in range(2): print((C[x][y]), end=' ') print(' ')
    • By Lucas_R22
      Bom dia, segue o exercício no qual estou com duvida ao faze-lo,
       
      Escreva um programa que leia dois números. Imprima a divisão inteira do primeiro pelo segundo, assim como o resto da divisão. Utilize apenas os operadores de soma e subtração para calcular o resultado. Lembre-se de que podemos entender o quociente da divisão de dois números como a quantidade de vezes que podemos retirar o divisor do dividendo. Logo, 20 ÷ 4 = 5, uma vez que podemos subtrair 4 cinco vezes de 20.
    • By MarVinOlivieraS
      Boa noite, tenho 34 anos e já comecei a aprender .php alguns anos atrás porém não pude continuar pois fui trabalhar numa área muito diferente. Hoje consegui um tempo para me dedicar a uma atividade q gosto. Escolhi voltar a a aprender a programar, mas como imagino que o mobile é que deve continuar em alta imaginei (Talvez por desinformação) que fosse mais rentável aprender Java invés de Php, já que o Java pode ser usado para desenvolvimento web, mobile e games.
      Eis que pesquisando sobre o assunto.... a maioria das pessoas que vi falando sobre começar a programar indicam aprender Javascript por também poder ser usado na maioria das áreas que o Java e por ter mais vagas de emprego.
       
      Aí imbaralhou tudo em minha cabeça... pois não quero aprender uma coisa que está entrando em desuso mas apesar de não lembrar mais nada de .php lembro que gostava de aprender a usá-lo e da sua randw Gama de possibilidades.
    • By edmin
      Olá pessoal, preciso de uma ajuda como seguinte, desde já, agradeço por qualquer ajuda...
      Pergunta: 
      Dado um arquivo 'ips.txt' com uma lista de endereços, o programa deve dar um ping para cada ip/domínio cadastrado. A linha contendo os resultados (mínimo, máximo, média)deve ser salva em arquivo 'log_data_hora.txt'.
      ips.txt
      www.claro.com.br;Servidor Claro
      www.colombo.com.br;Servidor Colombo
      www.renner.com.br;Servidor Renner
      www.gmail.com.br;Servidor Email Google
       
      tenho o seguinte código:
       
      import os from datetime import datetime def titulo(texto): print() print(texto) print('\033[7;97;40m-\033[m'*40) ###################################### def listar(): print('\033[7;97;40mListagem de IPs\033[m') print('\033[7;97;40m=\033[m'*72) arq = open('ips.txt', 'r') num = 0 linha = arq.readline() print('\033[7;97;40mNº .: IP/Dominio ...............: Cliente/Serviço ..................: \033[m') while linha != '': num = num + 1 partes = linha.split(';') print(f'\033[7;97;40m {num:3} {partes[0]:30s} {partes[1][:-1]}\033[m') linha = arq.readline() arq.close() print('\033[7;97;40m-\033[m'*72) ''' funcao que recebe um ip como parametro o tempo medio de resposta de um ping para este ip ou -1, caso erro ''' def ver_media(ip): dados = os.popen('ping '+ ip) # executa um comando no sistema operacional media = '' #find: retorna a posicao da string #(se nao encontrar retorna 0) for linha in dados: if linha.find('M‚dia') >= 0: posicao = linha.rfind('=') mediams = linha[posicao+1:] ms = mediams.rfind('ms') media = mediams[0:ms] if media == '': return -1 else: return int(media) def testar(): titulo('\033[7;97;40mTestando IPs Cadastrados\003[m') print('\033[7;97;40mIP/Domínio............ Tempo(ms)\033[m') print('\033[7;97;40m-\033[m'*40) arqLog = open('logs.txt', 'a') #salva em arquivo cada teste arq = open('ips.txt', 'r') linha = arq.readline() while linha != '': partes = linha.split(';') tempo = ver_media(partes[0]) funcao = ver_media(partes[1]) agora = datetime.now() dia = agora.strftime('%d/%m/%Y') hora = agora.strftime('%H:%M:%S') print(f'\033[7;97;40m{partes[0]:25s} {tempo}\033[m') arqLog.write(partes[0]+';'+str(tempo)+';'+dia+';'+hora+'\n') linha = arq.readline() arq.close() arqLog.close() #################################################### def logs(): titulo('\033[7;97;40m Listagem de Logs \033[m') arq = open('logs.txt', 'r') print('\033[7;97;40mNº..: IP / Dominio............: Média (ms): Dia do accesso..: Hora..:\033[m') num = 0 linha = arq.readline() while linha != '': num = num + 1 partes = linha.split(';') ip = str(partes[0]) tempo = str(partes[1]) dia = str(partes[2]) hora = str(partes[3]) print(f'\033[7;97;40m{num:3d} {ip:30s} {tempo:3s} {dia:17s} {hora} \033[m', end='') linha = arq.readline() arq.close() print('-'*43) print('\033[7;97;40m -> Se o tempo em ms, for igual a\033[m \033[1;31m-1\033[m,\033[7;97;40m\n' ' o host não está respondendo\033[m') return ######################### programa principal while True: print('\033[7;97;40m=\033[m' * 43) print('''\033[3;30;44m#### Selecione uma Opção: ####\033[m \033[7;97;40m 1. Listar Ips 2. Testar 3. Log de testes 4. Finalizar \033[m\n ''') print('\033[7;97;40m=\033[m' * 43) opcao = int(input('\033[3;30;44mDigite sua opção:\033[m ')) if opcao == 1: listar() elif opcao == 2: testar() elif opcao == 3: logs() elif opcao == 4: calcula() elif opcao == 5: print('\033[1;30mPrograma Finalizado pelo Usuário!!!\n' '==//==//==//==//==//==//==//==//==//\033[m') exit() else: print('\033[1;31mOps...\n' ' Opção Inválida!!!\033[m') break  
    • By T635
      Estou desenvolvendo um app para medir os batimentos do usuário por meio de um sensor em seu smartwatch. Entretanto estou com um bug na linha 36, e não faço a mínima ideia de como resolver.
      O link do código é esse:
      https://pastebin.com/gwEzhCdh
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.