Página Inicial do Fórum > Java Básico

Criptografador


Goto page 1


New Topic    Reply Message


  1. liuzp
    Offline
    Posts: 32

    Comment Arrow

    Publicado em: 03/07/2012 18:43:32

    Olá a todos os leitores,

    estou tentando fazer um criptografador o código já esta todo pronto, meu único problema é que ele dá um erro na linha 30, segue o código e o erro, respectivamente.



    Erro:

    _________________
    Atenciosamente:
    liuzp
    "A mente que se abre para uma nova ideia, jamais voltará ao seu tamanho original" Albert Einstein




  1. simu
    Offline
    Posts: 9410

    Comment Arrow

    Publicado em: 04/07/2012 04:23:20

    liuzp:
    Olá a todos os leitores,

    estou tentando fazer um criptografador o código já esta todo pronto, meu único problema é que ele dá um erro na linha 30, segue o código e o erro, respectivamente.



    Erro:



    Já verificou a FAQ?
    java.lang.ArrayIndexOutOfBoundsException

    e uma dica: em Java o char pode ser tratado como um número e para as letras do ASCII ele representa o próprio código ASCII. Na realidade o char é um número, somente algumas operações como a transformação em String e o println é que o consideram uma letra. Exemplos:

    no seu caso especificamente não é necessário fazer o segundo laço para procurar a letra, o índice para "Letras" pode ser calculado:

    _________________
      Nome real: Carlos F. Heuberger

    Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!

    "The mod javafree deserves, but not the one it needs right now."
    --------------------
    Não leio nem respondo MPs!
    This posting is provided AS IS with no warranties and confers no rights.




  1. liuzp
    Offline
    Posts: 32

    Comment Arrow

    Publicado em: 04/07/2012 12:08:29

    Eu acho que você não entendeu.
    O que quero fazer e com que o usuário informe uma palavra qualquer então o programa separa esta palavra em um array de char onde o programa lê a letra que esta neste array e a troca pela próxima letra, na segunda leitura ele faz o mesmo porém agora ele troca a letra não pela próxima mas pela segunda letra na fila.
    Ex:
    informei a palavra "oi";
    o programa separa em um array char 'o' e 'i', no caso;
    o programa devera ler a letra 'o' e troca-la pela letra 'p';
    depois ele lê a letra 'i' só que agora ele não a troca pelo 'j' e sim pelo 'k';
    apos isso ele junta tudo e informa a palavra final ao usuário, ou seja, "pk";

    Entendeu?, só que dai me apareceu este errinho ai que ta me incomodando.
    _________________
    Atenciosamente:
    liuzp
    "A mente que se abre para uma nova ideia, jamais voltará ao seu tamanho original" Albert Einstein




  1. simu
    Offline
    Posts: 9410

    Comment Arrow

    Publicado em: 04/07/2012 13:17:54

    liuzp:
    Eu acho que você não entendeu.
    O que quero fazer e com que o usuário informe uma palavra qualquer então o programa separa esta palavra em um array de char onde o programa lê a letra que esta neste array e a troca pela próxima letra, na segunda leitura ele faz o mesmo porém agora ele troca a letra não pela próxima mas pela segunda letra na fila.
    Ex:
    informei a palavra "oi";
    o programa separa em um array char 'o' e 'i', no caso;
    o programa devera ler a letra 'o' e troca-la pela letra 'p';
    depois ele lê a letra 'i' só que agora ele não a troca pelo 'j' e sim pelo 'k';
    apos isso ele junta tudo e informa a palavra final ao usuário, ou seja, "pk";

    Entendeu?, só que dai me apareceu este errinho ai que ta me incomodando.



    EU entendi exatamente isso sim!
    Parece que você não entendeu o que eu escrevi... [:-|


    Usando o seu exemplo (é claro que se faz com um laço)

    mas essa parte de usar char como número foi apenas uma dica,


    leu o link que passei com a explicação sobre o errinho? ou postei à toa? [:-(


    _________________
      Nome real: Carlos F. Heuberger

    Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!

    "The mod javafree deserves, but not the one it needs right now."
    --------------------
    Não leio nem respondo MPs!
    This posting is provided AS IS with no warranties and confers no rights.




  1. elmatador140
    Offline
    Posts: 279

    Comment Arrow

    Publicado em: 04/07/2012 13:46:09

    ArrayOutOfBones é um dos erros mais classicos do java, vc esta estourando o limite do seu array/list/qualquer lista.. vc esta chamando algo q não existe..
    _________________
    "Se vc não souber orientar objeto,herança,polimorfismo e fazer uma tela a unha,sem arrastar botão vc não é JAVA!"
    Nunca Será aspira, NUNCA!!!

    Estágiario!!
    Blumenau-SC




  1. liuzp
    Offline
    Posts: 32

    Comment Arrow

    Publicado em: 04/07/2012 17:38:09

    simu:
    liuzp:
    Eu acho que você não entendeu.
    O que quero fazer e com que o usuário informe uma palavra qualquer então o programa separa esta palavra em um array de char onde o programa lê a letra que esta neste array e a troca pela próxima letra, na segunda leitura ele faz o mesmo porém agora ele troca a letra não pela próxima mas pela segunda letra na fila.
    Ex:
    informei a palavra "oi";
    o programa separa em um array char 'o' e 'i', no caso;
    o programa devera ler a letra 'o' e troca-la pela letra 'p';
    depois ele lê a letra 'i' só que agora ele não a troca pelo 'j' e sim pelo 'k';
    apos isso ele junta tudo e informa a palavra final ao usuário, ou seja, "pk";

    Entendeu?, só que dai me apareceu este errinho ai que ta me incomodando.



    EU entendi exatamente isso sim!
    Parece que você não entendeu o que eu escrevi... [:-|


    Usando o seu exemplo (é claro que se faz com um laço)

    mas essa parte de usar char como número foi apenas uma dica,


    leu o link que passei com a explicação sobre o errinho? ou postei à toa? [:-(



    sim, sim eu li o link e entendi exatamente o que o nosso colega postou após você, porém não vejo onde estourei o array e outra agora dei uma modifica no código uma vez que estava faltando algumas informações segue abaixo.



    agora o erro é na linha 39, ou seja, , e o erro continua o mesmo, se para resolve-lo preciso usar números, você poderia simplificar um pouco melhor sua explicação simu?
    _________________
    Atenciosamente:
    liuzp
    "A mente que se abre para uma nova ideia, jamais voltará ao seu tamanho original" Albert Einstein




  1. simu
    Offline
    Posts: 9410

    Comment Arrow

    Publicado em: 05/07/2012 04:42:48

    liuzp:
    simu:

    [...]



    sim, sim eu li o link e entendi exatamente o que o nosso colega postou após você, porém não vejo onde estourei o array e outra agora dei uma modifica no código uma vez que estava faltando algumas informações segue abaixo.



    agora o erro é na linha 39, ou seja, , e o erro continua o mesmo, se para resolve-lo preciso usar números, você poderia simplificar um pouco melhor sua explicação simu?



    não ve onde estourou? A Exception indica em qual linha e qual o valor errado!
    O erro anterior deve ter sido aqui:

    pois o valor de 'n2' foi 4 (pela mensagem do erro) e 'b' tinha somente 4 posições, causado por:

    o laço vai ser percorrido a última vez com "n = b.length". O correto seria:

    igual você fez com os outros laços...
    o link que eu passei, e você leu, tem exatamente esse erro como exemplo!!!

    sekkuar:

    [...]
    um ultimo erro, também comum demais é


    O erro está em

    i<=matriz.length

    o correto é

    i<matriz.length
    [...]





    Bom, se agora o erro está na linha:

    existem duas possibilidades: ou 'n' está fora do limite, ou 'n2 + cont'...
    a mensagem da Exception provê o valor errado. Como a linha anterior acessa 'b[n]' sem gerar erro, obviamente 'n2 + cont' é o índice que causa o erro.
    Pergunta: qual a letra que vem depois de 'Z', qual a segunda letra depois do 'Z',... ou a segunda depois de 'Y'?
    Claro, você botou 52 letras no Array, mas se o texto de entrada tiver mais que 52 letras?

    Solução: testar o novo índice e se for maior que o Array continuar do começo:

    ou usando o operador módulo:

    (nessa caso não é necessário repetir as letras em 'Letras'...)
    _________________
      Nome real: Carlos F. Heuberger

    Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!

    "The mod javafree deserves, but not the one it needs right now."
    --------------------
    Não leio nem respondo MPs!
    This posting is provided AS IS with no warranties and confers no rights.




  1. liuzp
    Offline
    Posts: 32

    Comment Arrow

    Publicado em: 05/07/2012 07:34:14

    obrigado vou tentar fazer agora. Qualquer duvida a mais posto aqui.
    _________________
    Atenciosamente:
    liuzp
    "A mente que se abre para uma nova ideia, jamais voltará ao seu tamanho original" Albert Einstein




  1. Relacionados





New Topic    Reply Message     Forum Main Page -> Java Básico


Goto page 1