Oooonde esta o erro?

127 respostas
R

O codigo segue abaixo… porem uma explicaçao do que tentei fazer ai…
abrir uma caixa onde vc insere um texto simples… ele transforma em ASCII e mostra pra vc em outra caixa…

euu acredito que errei ali na parte do string… nao soube quando colocar o que…

me ajudem? :roll:

<blockquote>import javax.swing.JOptionPane;

public class Criptografa {

public static void main( String[] args ) {
String texto;
  char x;
  int valorA = 'A';
                    
  texto = JOptionPane.showInputDialog( " Insira seu texto! " ); 
  
               
 
JOptionPane.showMessageDialog( null, 
     "O texto em ASCII é" + texto,  
    JOptionPane.INFORMATION_MESSAGE ); 
  System.exit( 0 );

}

}

127 Respostas

R

Dava pra tu explicar melhor… qual o erro? você tá querendo transformar a String passada no campo de texto para valores correspondentes em inteiro, é isso?

C

nesse caso, como vc q tranformar um texto inteiro em ASCII
vc naum deveria criar uma estrutura de repeticao (com for) fazendo a leitura de cada caracter q compoem a string, transformando cada um deles em ASCII
sei la uma eh uma ideia :lol: :lol:

R

o erro é esse

criptografa.java:14: cannot find symbol
symbol : method showMessageDialog(<nulltype>,java.lang.String,int)
location: class javax.swing.JOptionPane
JOptionPane.showMessageDialog( null,
^
1 error

e é isso memo… quero transformar tudo incluido na caixa de texto em ASCII

brigadaum

C

tentei rabisca alguma coisa pra tentar transformar toda uma string em ASCII
naum sei se vai funciona mas!!!quem sabe

String string= JOptionPane.showInputDialog(" Inseira uma String"’);

for(int i=0, i<string.length, i++){

int x=0;

x=string.charAt(i);

String ascii+= String.parseString(x);

}

System.out.println(x);

por favor me corrijam os erros sou iniciante e a opniaum te vcs eh muito importante
desde ja obrigado

R

“C3pO”:
tentei rabisca alguma coisa pra tentar transformar toda uma string em ASCII
naum sei se vai funciona mas!!!quem sabe

String string= JOptionPane.showInputDialog(" Inseira uma String"’);

for(int i=0, i<string.length, i++){

int x=0;

x=string.charAt(i);

String ascii+= String.parseString(x);

}

System.out.println(x);

por favor me corrijam os erros sou iniciante e a opniaum te vcs eh muito importante
desde ja obrigado

é que alem de copiar simplesmente o codigo eu queria entender… mas vamos lah… acho que deu pra entender mais ou meno… se alguem puder me explicar tudo… por favor…

cara… naum funcionou… devo ta fazendo coisa mto errada… nem copiar o codigo eu consigo… hahaha :cry:

C

vou tenta te ajuda (e q deus nos ajude haha)
na primeira linha foi criada uma string q vai receber o q for digitado no JOptionPane, certo

depois foi criada uma estrutura de repeticao (for) que vai repetir seu codigo ateh q a condicao (i<string.length) for verdadeira (ou seja enquanto o valor de i for menor q o numero de caracteres q compoem a string)certo

dentro do for foi friada a variavel int x q recede cada caracter da string e converte em seu respectivo codigo ASCII (a cada loop do for a variavel x eh zerada p/ receber um novo valor

tenho duvida quanto a essa parte:
String ascii+= String.parseString(x);

a ideia e concatenar  a cada loop do for o novo valor a string ascii

(por favor me corrijam se estiver errado)

pra no final imprimirmos tudo (no caso eu usei o System.out.println)

naum rodei esse codigo por motivo de forcas maiores, entaum naum sei se funciona

espero ter ajudado em algo

R

“C3pO”:
vou tenta te ajuda (e q deus nos ajude haha)
na primeira linha foi criada uma string q vai receber o q for digitado no JOptionPane, certo

depois foi criada uma estrutura de repeticao (for) que vai repetir seu codigo ateh q a condicao (i<string.length) for verdadeira (ou seja enquanto o valor de i for menor q o numero de caracteres q compoem a string)certo

dentro do for foi friada a variavel int x q recede cada caracter da string e converte em seu respectivo codigo ASCII (a cada loop do for a variavel x eh zerada p/ receber um novo valor

tenho duvida quanto a essa parte:
String ascii+= String.parseString(x);

a ideia e concatenar  a cada loop do for o novo valor a string ascii

(por favor me corrijam se estiver errado)

pra no final imprimirmos tudo (no caso eu usei o System.out.println)

naum rodei esse codigo por motivo de forcas maiores, entaum naum sei se funciona

espero ter ajudado em algo

certooo, agora eu entendi… mas ae… mesmo assim tenho que colocar akele inicio neh?

<blockquote>import javax.swing.JOptionPane;

public class Criptografa {

public static void main( String[] args ) { </blockquote>
C

sim sim
:grin: :grin: :twisted:

R

haha ufa.. entao é seu codigo mesmo.. :twisted: .. rss... olha os erros ai..

import javax.swing.JOptionPane; 
public class Criptografa { 
   public static void main( String[] args ) { 

                                
      String JOptionPane.showInputDialog( " Insira seu texto! " ); 
      
      for(int i=0,i<text.length,i++){
      int x=0;
      x=string.charAt(i);
      String ascii+= String.parseString(x);
      }           
     
    System.out.println(x);

    }
 }

erro abaixo

criptografa.java:6: ';' expected String JOptionPane.showInputDialog( " Insira seu texto! " ); ^ criptografa.java:8: ';' expected for(int i=0,i<text.length,i++){ ^ criptografa.java:16: illegal start of expression } ^ criptografa.java:15: ';' expected ^ 4 errors
C

vc colocou algumas coisas meio diferentes:

String JOptionPane.showInputDialog( " Insira seu texto! " );

aqui voce de ve criar uma variavel do tipo string:

String string= JOptionPane.showInputDialog(…);

ai vem o for :

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

vc declara i, e enquanto i for menor q o numero de caracteres dentro da string i se incrementa (i++)

faz as correcoes e ve no q da
hahahahahaahahah :grin:

R

Oi Pessoal ! :grin:
Também sou iniciante mas acho que nessa eu posso ajudar !!!

no erro da linha6 é a “string” (a variável, por isso com ‘s’ minusculo) que recebe, então ficaria assim:
string = JOptionPane.showInputDialog(“Insira seu texto!”);

no erro da linha 8 o for (dentro do parentese é separado por ‘;’ e não por ‘,’ )é declarado da seguinte forma:
for( int i = 0; i < text.legth;i++) {

**Outra coisa … O System.out.println deve ficar dentro do “for”, para que a cada rodada do laço ele seja escrito.

O que vc está querendo azer nesta linha ???
String ascii+= String.parseString(x);

Atts,
Renata

R

Aeeee certo certo… consegui… brigadaum renatinha…

masss…

tem um porem, como eu coloquei o system.out.println dentro do for, ele nao ta imprimindo pra mim na tela, apenas na tela do dos… e agora, como imprimo para mim na tela??? faço outro fora?

C

ops
foi maws pelo , ao invehz do ; no for :oops:

string = JOptionPane.showInputDialog(“Insira seu texto!”);

o serto eh assim

String string = JOptionPane…

o string eh o nome da variavel nesse caso por isso o s minusculo

tipo eu tinha colocado o System.out.println fora do for pois a minha ideia era de imprimir tudo de uma unica vez por isso eu tinha dito q naum tinha certeza quanto essa tentativa de concatenar o conteudo da variavel
ascii com um novo valor a cada loopin do for

int x=string.charAt(i);
String ascii+= String.parseString(x);

sou um mero iniciante na bela arte de programar
por favor tenham passiencia comigo :lol: :lol: :lol:

R

“C3pO”:
ops
foi maws pelo , ao invehz do ; no for :oops:

string = JOptionPane.showInputDialog(“Insira seu texto!”);

o serto eh assim

String string = JOptionPane…

o string eh o nome da variavel nesse caso por isso o s minusculo

tipo eu tinha colocado o System.out.println fora do for pois a minha ideia era de imprimir tudo de uma unica vez por isso eu tinha dito q naum tinha certeza quanto essa tentativa de concatenar o conteudo da variavel
ascii com um novo valor a cada loopin do for

int x=string.charAt(i);
String ascii+= String.parseString(x);

sou um mero iniciante na bela arte de programar
por favor tenham passiencia comigo :lol: :lol: :lol:

haha magina cara… po, vc me deu uma ajuda grande…

mas ae… quanto ao string ascii… meu… nao entendi o que é e o netbeans nao aceita… é algo meio estranho… eu tirei ele fora de meu codigo e funfou numa boa…

poooorem… nao to conseguindo imprimir na tela, ele me mostra apenas no dos…

alguem me ajuda nisso???

C

eh eu axo q realmente aquela minha tentativa de concatenar o conteudo da String ascii naum ta funfando
tipo, o q ta sendo impresso na tela???

pra vc imprimi issu em uma tela (interface grafica)tenta:

JOptionPane.showMessage(null, variavel );

da uma olhada no site da sun
http://java.sun.com/j2se/1.5.0/docs/api/index.html

dentro de javax.swuing > JOptionPane >…

vc encontra todas essa interfaces graficas

M

fala pessoal, tentei implementar este exemplo, mas naum deu certo...
O q pode estar de errado com meu codigo?

import java.io.*;

public class teste4{
	public static void main (String args[]) throws java.io.IOException{
		
		int i;
		
		BufferedReader leitor = new BufferedReader(new InputStreamReader (System.in));
		System.out.println("Digite um nome:");
		String nome = leitor.readLine();
		
		for (i=0; i<nome.length; i++){
			int x=0;
			x = nome.charAt(i);
			System.out.println(x);
		}
	}
}

Está dando um erro nesta linha:

for (i=0; i<nome.length; i++){
erro:
cannot find symbol variable length
M

já consegui…

era length() no lugar de length…

mais uma duvida, o q faz o metodo charAt(xxx)?

C

length eh um metodo e deve ser terminado com ()
length()

C

noooooooooooosssaaaaaaaaaaaaaaaaaaa
q mancada a minha
no exemplo q eu tentei passa algumas respostas atras eu usei length
e naum length()

aaaaaaahhahahahahahahahhahahhahahahah neeeooooobaaaaa !!! :oops: :oops: :oops: 8O 8O

M

O q faz o metodo

charAt() ?

M

pelo q entendi ele enumera as letras.

mas naum entendi pq q começa no 97.

a=97
b=98
c=99
d=100

naum seria legal começar no 1?

C

o cahrAt captura um caracter Exemplo

String x= “portal”;
for(int i=0; i < x.length(); i++){

char b= x.charAt(i);

System.out.println(b);

}

o q acontece:
a cada loopin do for a variavel b vai receber o caracter q se encontra na posicao i da String x e logo depois vai imprimir cada um deles

M

blz…

mas o q saum estes numeros intaum?
pq a=97, b=98?

pra separar os caracteres, uso .toCharArray().

ja pesquisei no site da sun, mas naum entendi tb…

espero ter sido claro na duvida…

R

“C3pO”:
noooooooooooosssaaaaaaaaaaaaaaaaaaa
q mancada a minha
no exemplo q eu tentei passa algumas respostas atras eu usei length
e naum length()

aaaaaaahhahahahahahahahhahahhahahahah neeeooooobaaaaa !!! :oops: :oops: :oops: 8O 8O

hahaha isso eu ja tinha conseguido arrumar sozinho…

mas ainda nao to conseguindo imprimir na tela meu resultado… q droga…

M

opa…

já descobri o q estava dando errado…

no lugar de

int x =0;

coloquei

char x=0;

daí deu o resultado q vc me falou…

Valeu pela paciência …rs

R

“marcelo_mococa”:
blz…

mas o q saum estes numeros intaum?
pq a=97, b=98?

pra separar os caracteres, uso .toCharArray().

ja pesquisei no site da sun, mas naum entendi tb…

espero ter sido claro na duvida…

cada caracter tem um valor… o alfabeto em ASCII começa em 97 e vai se nao me engano até 122…

R
Oi Ruy !

Para vc mostrar em uma caixa de diálogo o resultado , vc precisa usar JOptionPane 

ficaria assim :

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

JOptionPane.showMessageDialog(null, Letra na tabela ascii+ string[i]);

*** Não tenho muita certeza se vai funcionar fazendo uma variável de array … se quiser , posta seu codigo todo aqui, pra nos tentarmos resolver! :wink:
Atts,
Renata

R
"renatadickie":
Oi Ruy ! Para vc mostrar em uma caixa de diálogo o resultado , vc precisa usar JOptionPane ... ficaria assim : for(int i = 0; i < string.length(); i++ ) { JOptionPane.showMessageDialog(null, "Letra na tabela ascii"+ string[i]);

*** Não tenho muita certeza se vai funcionar fazendo uma variável de array .... se quiser , posta seu codigo todo aqui, pra nos tentarmos resolver! :wink:
Atts,
Renata

Valew pela tentativa.. rss.. mas nao funciona mesmo com uma variavel de array....

agora surgiu outro problema...

ele nao esta transformando toda minha palavra em ASCII, apenas a ultima letra... porque isso esta acontecendo?? segue o codigo abaixo....

a minha intençao é apenas tranformar em ASCII e mostrar o resultado... é simples e eu to fazneod tempestade num copo de agua ou eu q sou burro mesmo?

import javax.swing.JOptionPane;
public class Main {
    public static void main( String[] args ){
        String box = JOptionPane.showInputDialog ("insira seu Texto");
        
        for(int i = 0; i<box.length(); i++){
            int x = 0;
            x = box.charAt(i);
            System.out.println(x);
               }
        
    }

    
}
M

Ficaria assim:

for(int i = 0; i < string.length(); i++ ) {
     int x = 0;
     x = string.charAt(i);
     JOptionPane.showMessageDialog(null, "Letra na tabela ascii"+ x);
}
R
"marcelo_mococa":
Ficaria assim:
for(int i = 0; i < string.length(); i++ ) {
     int x = 0;
     x = string.charAt(i);
     JOptionPane.showMessageDialog(null, "Letra na tabela ascii"+ x);
}

Nossa marcelo.. perfeito cara... brigadaum...

agora vamos a segunda parte.. rs...

certo, ele guardou todos esse valores... agora preciso que ele some esses valores com qualquer numero.. vou tentar fazer o codigo e posto aqui pra voces verem se esta certo ok??? grato!

R

Acho que é isso q vc quer !

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

int x = 0;

x = string.charAt(i);

x += 3;

JOptionPane.showMessageDialog(null, Letra na tabela ascii+ x);

}

Espero ter ajudado !
Boa Sorte na facul !!!
Renata

R

Eu me empolguei aqui com seu código (rsrsrs) , vem cá, vc vai precisar decriptar os números depois ??
Por que senão, vc poderia fazer uma soma randômica para os numeros que ficaram em x.
por exemplo:

import javax.swing.JOptionPane;

public class Cripto {

public static void main(String[] args) {

String box = JOptionPane.showInputDialog(insira seu Texto);
for (int i = 0; i &lt; box.length(); i++) {
int x = 0;
x = box.charAt(i);
x =(int)(x+Math.random()*10);
JOptionPane.showMessageDialog(null,i+1 +  letra da palavra inserida \n de acordo com a tabela ascii: \n"+ x);
  }

}

}

Ficaria mais legal… e mais difícil de descobrir quais são os números também !
Até mais !
Renata

M

Olá Renata…

O q faz este metodo ramdom da classe Math?

Seria legal bolarmos um jeito de poder descriptografar os dados depois. O q acham?

R

POis é … se for para decriptar com o método random fica mais difícil …
O método random retorna (aleatóriamente) um valor double positivo entre 0.0 e 1.0, por isso tem que multiplicar por 10, para que fique ente 0 e 10 …!!!

C

eae pessoal blza
nossa esse topico tomou proporcoes gigantescas!!! :grin:

por favor me digam se eu entendi certo
vc criou um numero randomico entre 0 e 10 e o somou a variavel x
foi issu ?

x =(int)(x+Math.random()*10);

e como vai fazer pra desfazer issu??? :?: 8O

R

Essa é a grande questão !!!
Acho que essa não deve ser a melhor maneira … :???:

C

eu andei lendo meio por cima alguma coisa sobre API q trabalham com criptografia mas naum me recordo nomes
alguem ai poderia da uma luz aqui embaixo??? :cool:

R

haha perai perai.. vamos com calma... eita topico gigante...

pessoal.. até a parte de passar o texto para ASCII ficou perfeito... agora vou passar para a proxima etapa... vou explicar brevemente o que tenho que fazer daki pra frente...

1.eu tenho que apenas criptografar!
2. preciso usar uma chave para criptografar... entao é assim..

mandei meu primeiro texto pra ASCII... agora preciso pegar a minha chave que tambem vou ter que passar para ASCII, e somar os numeros..... simples??? nao... tem porem....

se eu pegar por exemplo a letra Z que vale 121 ou 122, nao lembro... e somar com a letra A que vale 97... vai dar um numero acima de 200... que nao existe em ASCII.. ou seja, nao seria uma letra valida.... mas calmai... isso quero pensar depois...

ainda estou passando para ASCII minha chave.. porem da erro... parece que nao posso ter 2 strings no mesmo codigo... (me digam que nao é isso...) segue o codigo abaixo.. me corrijam por favor!

import javax.swing.JOptionPane;
public class main {
    public static void main( String[] args ){
        
        String box = JOptionPane.showInputDialog("Poe seu texto ai!");
        for(int i = 0; i < box.length(); i++ ) { 
        int x = 0; 
        x = box.charAt(i); 
     JOptionPane.showMessageDialog(null, "Letra na tabela ascii "+ x); 
} 

String chave = JOptionPane.showInputDialog("Insira sua chave!");
for(int = 0; i < chave.length(); i++ ){
	int y = 0;
	y = chave.charAt(i);
	JOptionPane.showMessageDialog(null, "Letra na tabel denovo "+ y);
}
    }
  }
C

fico faltando declara o i dentro do for
for(int = 0; i < chave.length(); i++ ){

C

no for vc esta imprimindo caracter por caracter na tela atraves do JOptionPane.showMessageDialog()

seria interessante, se de alguma forma conseguissemos concatenar tudo e mostrar de uma vez

alguma ideia?

R

“C3pO”:
no for vc esta imprimindo caracter por caracter na tela atraves do JOptionPane.showMessageDialog()

seria interessante, se de alguma forma conseguissemos concatenar tudo e mostrar de uma vez

alguma ideia?

tambem pensie nisso… afinal, se tenho um texto de 2 paginas, 3 mil letras, vao ser 3 mil impressoes na tela… 8O

R

“C3pO”:
fico faltando declara o i dentro do for
for(int = 0; i < chave.length(); i++ ){

Beeeela bela!! perfect!! por causa de um izinho… rss…
ta tudo caminhando bem…

ja tenho meu texto e minha chave em ASCII…

e agora… como somo os dois?? rs

C

tipo
a sua ideia eh
tranformar uma String de tamanho “n” em codigo ASCII e depois ao valor encontrdo para cada caracter vc quer somar o valor ASCII de uma chave, eh issu?
se for, nesse caso, a chave teria q ter o mesmo tamanho da String ???

sera? 8O 8O 8O

estou tendo uma espasmo mental :tosco:

R

“C3pO”:
tipo
a sua ideia eh
tranformar uma String de tamanho “n” em codigo ASCII e depois ao valor encontrdo para cada caracter vc quer somar o valor ASCII de uma chave, eh issu?
se for, nesse caso, a chave teria q ter o mesmo tamanho da String ???

sera? 8O 8O 8O

estou tendo uma espasmo mental :tosco:

aiii é que esta… a chave nao pode depender do tamanho do texto… entao… logicamente pretendo fazer uma chave de 5 letras ou 10… e faço a mesma ficar repetindo e somando caracter por caracter…

mas estou em um dilema… me ajudem…

se
A = 97
e
Z = 122

somado os dois isso dara 219

nao existe letra para esse numero… como transformar esse 219 em uma letra valida?
ou em criptografia isso nao precisa acontecer?

AH… E NAO PRECISO DESCRIPTOGRAFAR!

C

vamos ver se issu tem algum sintido:

String box= JOptionPane.showInputDialog( “Insira uma String”);
String chave=JOptionPane.showInputDialog(“Insira a chave”)

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

int x=0;
x= box.charAt(i);

for (int j=0; j<chave.length(); j++){

int y = 0;

y=chave.charAt(j);

x = x+ y;
if(j == chave.length()-1){

j=0;

}

}

}
ele vai pega cada caracter de x(box)somar com y(chave)

quando j for igual a chave ele zera j

issu vai acontecer ateh q o primeiro for pare

(naum sei se funfa, eh uma ideia)

mas ainda temos o problema em armazenar todos de uma vez :sad:
R

“C3pO”:
vamos ver se issu tem algum sintido:

String box= JOptionPane.showInputDialog( “Insira uma String”);
String chave=JOptionPane.showInputDialog(“Insira a chave”)

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

int x=0;
x= box.charAt(i);

for (int j=0; j<chave.length(); j++){

int y = 0;

y=chave.charAt(j);

x = x+ y;
if(j == chave.length()-1){

j=0;

}

}

}
ele vai pega cada caracter de x(box)somar com y(chave)

quando j for igual a chave ele zera j

issu vai acontecer ateh q o primeiro for pare

(naum sei se funfa, eh uma ideia)

mas ainda temos o problema em armazenar todos de uma vez :sad:</blockquote>

perai… ateh que consegui entender… mas nao entendi o j no lugar do i, lah no for…

qual a função do j?

nao… acho que nao entendi… hahaha pq vc fez tudo denovo??

nao seria mais simples eu fazer uma condiçao somar logo embaixo do meu codigo?

C

a ideia era colocar outro for dentro contando o tamanho da chave,
quando a chave chegase no seu tamanho limite

if(j==chave.length()-1){

ele zeraria o contador j (j=0;) para q assim ele continua se somando com a String
como se fosse um loop infinito q so termina quando o primeiro for parar

se por acaso ai digamos q issuuuuuuuu foncione
resolveria o problema do tamanho da chave :???:

R

mas caraaa, vc me complicou mais ainda… hahaha por favor, se puder, faz em cima do meu codigo isso que vc fez…

C

as unicas coisas q eu inseri foram
o outro JOptionPane para receber a chave

o outro for para q a cada caracter retirado da string box e convertido em ASCII seja somado ao valor ASCII de um caracter da chave,
e o if eh para quando o segundo estiver proximo de terminar (quando a chave eh pequena)o if zera o contador j fazendo com q ela comece a ler a chave desde o primeiro carater de novo

R

ó… nao sei o q vc fez… na compilaçao ta tudo ok…
qdo mando rodar, ele manda inserir o texto e a chave…
blz, inseri…

agora ele ta lah lendo… ja faz uns 10 minutos e nao fez nada… hahaha

C

vc criou alguma saida das informacoes?
o q aparece na tela? nada?

posta como vc fez
issu (naum estou certo, mas tem cara de loop infinito, hahahahhhahhahah)

R

uhahuauha ferrouuuu… vc criou uma criação infinita… ta aparecendo na minha tela texto criptografa =. e cada vez mais aumentando o numero… uhauhauha deixa… tenho q ir pra facul… valew pessoal… teh mais

C

hahaahahahahahahhahah
criamos um monstro 8O :grin: 8O :grin:

R

hauhauhahaua calma calma… nao criamos um monstro… mas vi certos erros…

ta, voltei da facul e tenho mais uma semana pra fazer… porem vale 8 e descobri que tenho que fazer de 2 tipos… de vigener e de cezer… a de vigener eh a que a gente ta fazendo… ufa… ta quase terminando… a de cezar eh mais facil ainda…

quaaanto aos erros… primeiro… eu tenho que ler o meu int fora do for, senao ele vai sempre zerar ao ler novamente… ou seja… ele só tava lendo a ultima letra…

agooora, desobri o q tenho que fazer… olha que cruel…

pegar a somatoria dos 2 (do texto e da chave…) logo em seguida diminuir o valor de Z… 122 neh?? esse resultado, somar com o valor de A…

facinho né?? hahahahaha

vamos a luta…

hj ainda ou amanha posto meu novo codigo… e depois o codigo da cifra de cesar…

abraços!

R

e sim… se depender de mim esse topico ainda vai muuuito longe… to com uma ideia pra postar pra vocês, mas deixa eu terminar aqui antes!

R

opppaaa.. cheguei com coisa nova... quer dizer.. veia.. rss...

olhem o codigo ai em baixo....

to com um problema.. ele ta somando somente um caracter... como faço ele dar o looping e somar todos os caracteres???

import javax.swing.JOptionPane;
public class main {
    public static void main( String[] args ){
        
        String box = JOptionPane.showInputDialog("Poe seu texto ai!");
        int x = 0;
        for(int i = 0; i < box.length(); i++ ) { 
        x = box.charAt(i); 
     JOptionPane.showMessageDialog(null, "Letra na tabela ascii "+ x); 
} 

String chave = JOptionPane.showInputDialog("Insira sua chave!");
int y = 0;
for(int i = 0; i < chave.length(); i++ ){
	y = chave.charAt(i);
	JOptionPane.showMessageDialog(null, "Letra na tabel denovo "+ y);
}

String resultado = "0";

int z = 0;
	z = ( x + y );
	JOptionPane.showMessageDialog(null, "Resultado "+ z);
}

}

}

ta acontecendo assim

se eu ponho no texto AB e na chave DF, ele ta somando somente o A com D... e para...

preciso seguir ateh o fim!

J
int z = 0; 
   z = ( x + y ); 
   JOptionPane.showMessageDialog(null, "Resultado "+ z);

nao to acompanhando seu post todo, mas acho que da pra responder essa ultima pergunta.
voce quer que ele some o codigo de cada letra da palavra dada com o codigo da chave, ou seja, ambas tem que ter o mesmo tamanho, certo?
se for, voce precisa colocar o loop ai, nesse trecho la em cima:

int z = 0; 
for(int i = 0; i < chave.length(); i++) {
   z = ( x + y ); 
   JOptionPane.showMessageDialog(null, "Resultado "+ z); 
   resultado += (char) z;
}

se a chave e a palavra nao tiverem o mesmo tamanho, voce pode colocar o menor tamanho no lugar de chave.length(), senao da pau…

ps.: esse resultado += ((char) z); é porque, pelo menos acho, voce quer que as respostas fiquem em “resposta” no fim certo?

espero ter ajudado

R

“javaAdicted”:
int z = 0; z = ( x + y ); JOptionPane.showMessageDialog(null, "Resultado "+ z);
nao to acompanhando seu post todo, mas acho que da pra responder essa ultima pergunta.
voce quer que ele some o codigo de cada letra da palavra dada com o codigo da chave, ou seja, ambas tem que ter o mesmo tamanho, certo?
se for, voce precisa colocar o loop ai, nesse trecho la em cima:

int z = 0; 
for(int i = 0; i < chave.length(); i++) {
   z = ( x + y ); 
   JOptionPane.showMessageDialog(null, "Resultado "+ z); 
   resultado += (char) z;
}

se a chave e a palavra nao tiverem o mesmo tamanho, voce pode colocar o menor tamanho no lugar de chave.length(), senao da pau…

ps.: esse resultado += ((char) z); é porque, pelo menos acho, voce quer que as respostas fiquem em “resposta” no fim certo?

espero ter ajudado

opaaa agora sim… deu certoooo valeewwwww

R

opa, me empolguei tantao que esqueci de postar a etapa seguiunte…

bommm… agora esta tudo somado… tenho mais dificuldades pela frente…

agora preciso assim…
nao precisava mostrar o resultado… era só pra saber se tava funcionando…

o que tenho que fazer agora… é o seguinte… uma condiçao… mas é uma conta que ainda nao tenho… ja ja eu posto…

e tb tenho que tranformar isso para caracter… como faço? e tudo em uma linha só… ahhh grrhhh

C

fala ae gente blza
vc conseguiu alguma solucao para o problema do tamanho da chave
tenta forca ela a se repetir ateh q some com toda a string ???

R

“C3pO”:
fala ae gente blza
vc conseguiu alguma solucao para o problema do tamanho da chave
tenta forca ela a se repetir ateh q some com toda a string ???

BEMMM LEMBRADO GAROTOOO… vc chegou na hora certa… vamos voltar lah pra cima…
a chave ainda nao ta fazendo o looping em cima do texto… ou seja… ela só ta passando pra ASCII akilo que é do tamanho da chave…

ajuda ai pessoal… preciso de um codigo que faça isso…

Texto = abcdefg

Chave = ab

na somatoria ele tem q fazer isso

abcdefg
abababa

e ai… como faço isso?

ah… ainda preciso transformar de ASCII devolta pra caracter…

eee trequinho complicado…

C

tinha pensado no seguinte
-ao mesmo tempo em q o for transforma cada caracter da string em ASCII ele joga-se o caracter para uma outra estrura de repeticao (for),
este por sua vez estaria transformando cada caracter da chave em seu respectivo ASCII, dai ele somase, mas detalhe , de alguma forma ao termino da string chave, fose feito um teste(if) averiguando se o caracter da chave naquele momento era o ultimo, dai o contador do for seria zerado para q ele comessa-se aler a chave denovo do primeiro caracter, enquanto issu o primeiro for continuaria normalmente a transformar a string principal em ASCII e passar os valores para o segundo for
mas para issu presizava armazenar essa sequencia de ASCII resultantes em alguma string

a ideia tem algum sintido pra vc??? 8O 8O 8O

eu vi em outro topico q pra concatena string issu funciona, eu acho :
string += novovalor

agora num sei!!! :sad:

J

“ruyloko”:
ajuda ai pessoal… preciso de um codigo que faça isso…

Texto = abcdefg

Chave = ab

na somatoria ele tem q fazer isso

abcdefg
abababa

e ai… como faço isso?

ah… ainda preciso transformar de ASCII devolta pra caracter…

pra fazer isso voce pode somar com o caracter na posicao i da String, mas modularizado ao tamanho da chave. um exemplo vai deixar mais claro:

import javax.swing.JOptionPane; 
    public static void main( String[] args ){ 
        String palavra;
        String chave;
        String resultado = ""; 


        palavra = JOptionPane.showInputDialog("Poe seu texto ai!"); 
        chave = JOptionPane.showInputDialog("Insira sua chave!"); 
        
        for(int i = 0; i < palavra.length(); i++) {
             int charPalavra = palavra.charAt(i);
             int charChave = chave.charAt(i % chave.length());
             int result = charPalavra + charChave;
             resultado += (char) result;
       }
     
       JOptionPane.showMessageDialog(null, resultado); 

}

entao, o codigo ai em cima faz tudo o que voce pediu na citação que eu separei lah no começo…testa isso ai, e se nao pegar, ou voce nao tiver entendido alguma coisa, pergunta ae…

espero ter ajudado.

R

“javaAdicted”:
“ruyloko”:
ajuda ai pessoal… preciso de um codigo que faça isso…

Texto = abcdefg

Chave = ab

na somatoria ele tem q fazer isso

abcdefg
abababa

e ai… como faço isso?

ah… ainda preciso transformar de ASCII devolta pra caracter…

pra fazer isso voce pode somar com o caracter na posicao i da String, mas modularizado ao tamanho da chave. um exemplo vai deixar mais claro:

import javax.swing.JOptionPane; 
    public static void main( String[] args ){ 
        String palavra;
        String chave;
        String resultado = ""; 


        palavra = JOptionPane.showInputDialog("Poe seu texto ai!"); 
        chave = JOptionPane.showInputDialog("Insira sua chave!"); 
        
        for(int i = 0; i < palavra.length(); i++) {
             int charPalavra = palavra.charAt(i);
             int charChave = chave.charAt(i % chave.length());
             int result = charPalavra + charChave;
             resultado += (char) result;
       }
     
       JOptionPane.showMessageDialog(null, resultado); 

}

entao, o codigo ai em cima faz tudo o que voce pediu na citação que eu separei lah no começo…testa isso ai, e se nao pegar, ou voce nao tiver entendido alguma coisa, pergunta ae…

espero ter ajudado.

cara, desculpa, mas eu nao entendi o que você fez ai… nao consegui encaixar isso no meu codigo…

R

“C3pO”:
tinha pensado no seguinte
-ao mesmo tempo em q o for transforma cada caracter da string em ASCII ele joga-se o caracter para uma outra estrura de repeticao (for),
este por sua vez estaria transformando cada caracter da chave em seu respectivo ASCII, dai ele somase, mas detalhe , de alguma forma ao termino da string chave, fose feito um teste(if) averiguando se o caracter da chave naquele momento era o ultimo, dai o contador do for seria zerado para q ele comessa-se aler a chave denovo do primeiro caracter, enquanto issu o primeiro for continuaria normalmente a transformar a string principal em ASCII e passar os valores para o segundo for
mas para issu presizava armazenar essa sequencia de ASCII resultantes em alguma string

a ideia tem algum sintido pra vc??? 8O 8O 8O

eu vi em outro topico q pra concatena string issu funciona, eu acho :
string += novovalor

agora num sei!!! :sad:

8O 8O 8O 8O

cara, vc quer me deixar loco??? hahahaha

calmai… vamos ler denovo… hummmm

caraaaa, q complicado… hahahaha nao sei… eu li o codigo de baixo… mas nao deu mto certo… o dele funfou mais ou menos… da alguns erros…

acho que no meu codigo só ta faltando fazer um looping da chave em cima do texto… mas nao sei qual codigo faz isso…

C

posta o q vc fez ateh agora
e discreve q saida vc consegue ao rodar o programa

ateh mais :grin: :grin:

R
import javax.swing.JOptionPane;
public class main {
    public static void main( String[] args ){
        
        String box = JOptionPane.showInputDialog("Poe seu texto ai!");
        int x = 0;
        for(int i = 0; i < box.length(); i++ ) { 
        x = box.charAt(i); 
     //JOptionPane.showMessageDialog(null, "Letra na tabela ascii "+ x); 
} 

		String chave = JOptionPane.showInputDialog("Insira sua chave!");
		int y = 0;
		for(int i = 0; i < chave.length(); i++ ){
		y = chave.charAt(i);
			//JOptionPane.showMessageDialog(null, "Letra na tabel denovo "+ y);
}

String resultado = "";

int z = 0;
for(int j = 0; j < chave.length(); j++) {

	z = ( x + y );
	JOptionPane.showMessageDialog(null, "Resultado "+ z);
	}
	
}
}

só consegui isso ateh agora... o q ele ta fazendo eh o seguinte...

transformando pra ASCII as duas strings (box e chave) e somando...
porem ele só soma o numero de caracters q eu coloquei na chave...

ou seja, se eu tenho 3 caracteres na box e somente 1 na chave... ele soma o primeiro....

preciso fazer a chave rodar dentro do box inteiro até acabar...

C

como os valores ASCII naum estao sendo armazenados em nehuma outra variavel no final dos for x e y naum estariam com o valor do ultimo caracter apenas ???

R

nao… ele ta me mostrando todos os valores… e to lendo a variavel antes de começar o for, entao ele grava ali!

C

tenta roda issu aki (num kero nem ve!!! hahah)

import javax.swing.JOptionPane;

public class main{
public static void main(String [] args){

String box=JOptionPane.showInputDialog(“Insira uma string”);
String chave=JOptionPane.showInputDialog("Insira sua chave);

int x=0;

int y=0;

int z=0;

String ascii;

for(int i =0; i<box.length(); i++){
x=box.charAt(i);

for(int j=0; j<chave.length(); j++){

y=chave.charAt(j);

z=(x+y);

ascii+= String.parseString(z);
if(j==chave.length()-1){
           j=0;
          }
}

}

JOptionPane.showMessageDialog(String cifrada:+ascii);

}

}

a essa altura do campionato qualquer tentativa eh válida
tenta roda issu e me diz no q da
sera q teremos outro loop infinito???ham?ham? :grin:

R

uhauhauhauh cara… fiquei ateh com medo de rodar… mas fui fundooo e nao rodou… hahaha
seguinte… nao sei da onde… acho que fruto da sua imaginação… hahaha brincadeira… mas da onde vc tira issu?

ascii+= String.parseString(z);

ele nao reconhece na verdade esse ascii …
da erro tb logo embaixo tentando mostrar ele…

me tira uma duvida feia…

o que faz dar o loop é o for certo?
e o q significa isso entao?

i = 0
i < string.length
i++

??? :roll: ???

C

eu li q o operador + tambem concatena strings
nesse trecho :
ascii+= String.parseString(z);

eu tentei, a cada volta do for, concatenar o conteudo da string ascii
com o valor d z (transformando o valor d inteiro de z em uma string)
mas pelo q eu vejo naum ta dando muito certo

o que faz dar o loop é o for certo?
e o q significa isso entao?
Código:
i = 0 >> aqui vc cria um contador para controlar quantas “voltas” o for vai dar

Código:
i < string.length() >>aqui vc esta dizendo q o for vai executar os comandos dentro de sua estrutura emquanto o valor inteiro i for menor q o numero de caracteris contidos na string

Código:
i++ >> nessa parte vc diz q a cada loop (volta) q o for der ele deve somar 1 ao valor do contador, vai funcionar como um freio para a estrutura
quando a condicao (i<string.length()) for falsa a estrutura para naum executando mais seus comandos internos

eh valeu a tentativa
continuemos a pensar!!! :roll:

R

“C3pO”:
eu li q o operador + tambem concatena strings
nesse trecho :
ascii+= String.parseString(z);

eu tentei, a cada volta do for, concatenar o conteudo da string ascii
com o valor d z (transformando o valor d inteiro de z em uma string)
mas pelo q eu vejo naum ta dando muito certo

o que faz dar o loop é o for certo?
e o q significa isso entao?
Código:
i = 0 >> aqui vc cria um contador para controlar quantas “voltas” o for vai dar

Código:
i < string.length() >>aqui vc esta dizendo q o for vai executar os comandos dentro de sua estrutura emquanto o valor inteiro i for menor q o numero de caracteris contidos na string

Código:
i++ >> nessa parte vc diz q a cada loop (volta) q o for der ele deve somar 1 ao valor do contador, vai funcionar como um freio para a estrutura
quando a condicao (i<string.length()) for falsa a estrutura para naum executando mais seus comandos internos

eh valeu a tentativa
continuemos a pensar!!! :roll:

humm… pensando aqui com meus botoes… tem algum comando de comparação? tipo… estava tentando fazer ele comparar a chave com o texto, e a partir disso ele tirar quantos loopings vai ter q fazer para chegar no fim do texto…

R

OI pessoal !!! Estava um pouco abafada aqui no trabalho e não pude ajudar antes !
O que vcs querem dizer com “chave” ??? O que significa isso e o que querem fazer com isso ??
:?: :?: :?: :?: :?: :?:
Vc tá querendo tipo intercalar as letras com dois(ou mais) caracteres diferentes , é isso ??
8O 8O 8O

J

se ainda for de seu interesse, ai vai o codigo comentado:

import javax.swing.JOptionPane; 
    public static void main( String[] args ){ 
         //palavra que sera encriptada
        String palavra; 

         //palavra chave, que sera menor que a palavra acima
        String chave; 

         //resultado da encriptacao
        String resultado = ""; 

        //recebe a palavra a ser encriptada
        palavra = JOptionPane.showInputDialog("Poe seu texto ai!"); 
 
        //recebe a palavra-chave
        chave = JOptionPane.showInputDialog("Insira sua chave!"); 
        
         //este laço vai percorrer toda a palavra passada
        for(int i = 0; i < palavra.length(); i++) { 
             //a representacao em ascii de um caractere da palavra
             int charPalavra = palavra.charAt(i); 

             /*a representacao em ascii do caractere da palavra chave equivalente ao caractere acima, como essa palavra pode ser menor que a palavra principal, o indice do caractere é modularizado, para que não haja StringIndexOutOfBounds. o operador "%" retorna o resto da divisao do primeiro pelo segundo operando*/
             int charChave = chave.charAt(i % chave.length()); 

             /*a soma dos caracteres acima, acredito que é isso que voce quer, e sugiro que isso seja modularizado a 256*/
             int result = charPalavra + charChave; 
             
              //o resultado acima é concateado à String resultante 
             resultado += (char) result; 
       } 

       //aqui é mostrada a string com a palavra criptografada        
       JOptionPane.showMessageDialog(null, resultado); 

}

espero ter sido mais claro dessa vez…

R

Eu rodei o codigo que javaAdicted passou e ficou massa !!! Deu tudo certinho, a encriptação tudo !! :grin: :grin: :grin: :grin: :grin:

L

Fala Ruy blzinha ? E ae pessoal …

Eu sei que provavelmente vcs vão ter muita raiva de mim ao ler isso mas é minha ultima saída … ja postei em pelo menos uns 8 fóruns e ninguem respondeu … então desculpa ae …

Seguinte … so da classe do ruy tbem e tenho que fazer essa porcaria de criptografia … só q o problema é q to tentando faz 3 semanas fazer em java script e até agora a unica coisa que consegui é uma bela dor de cabeça.

Sera que alguem pode pelo amor de deus dar uma ajuda ? Achei um código pronto na net e tentei usar como modelo … só piorou a coisa … se alguem se interessar script aqui.

E ja to dando uma lida nos tutoriais que tem aqui … vi o ruy fuçando em java e curti o negocio …

Vlw galera e desculpa de novo o abuso …

J

“LeoFicz”:
Fala Ruy blzinha ? E ae pessoal …

Eu sei que provavelmente vcs vão ter muita raiva de mim ao ler isso mas é minha ultima saída … ja postei em pelo menos uns 8 fóruns e ninguem respondeu … então desculpa ae …

Seguinte … so da classe do ruy tbem e tenho que fazer essa porcaria de criptografia … só q o problema é q to tentando faz 3 semanas fazer em java script e até agora a unica coisa que consegui é uma bela dor de cabeça.

Sera que alguem pode pelo amor de deus dar uma ajuda ? Achei um código pronto na net e tentei usar como modelo … só piorou a coisa … se alguem se interessar script aqui.

E ja to dando uma lida nos tutoriais que tem aqui … vi o ruy fuçando em java e curti o negocio …

Vlw galera e desculpa de novo o abuso …

iihhh cara, voce se complicou…
javascript é uma linguagem pra html, e é completamente diferente de Java, que é uma linguagem de programação de alto nível…

mas é o seguinte, nem voce nem ruyloko disseram bem qual é a solução que voces precisam encontrar…entao fala ae que talvez fique mais facil ajudar…pq eu ja postei um codigo ae que faz o que ruyloko pediu e parece que nao é bem o que voces precisam…entao, to esperando ae

falow,
boa sorte

L

É … parece q dancei mesmo huahuahuahuhah … vou pegar umas apostilas java pra ver se consigo pelo menos entender o código que vcs forem passando aqui … entrei de bicão mesmo uahuhauhauh …

Quanto a explicação vamo la :

A gente precisa de um código que faça a criptografia de um texto, que vai ser inserido em uma caixa ( como não faço nem idéia de como pode ser feito em java vo da um exemplo, caixa de texto de formulário ) pelo usuário ( vamo chamar de caixa1 ).

Aí começa o problema real : O texto que vai ter nessa caixa1 tem que ser somado com uma chave qualquer inserida pelo usuário ( caixa2 ) isso chama cifra de vigenere e funciona assim :

Texto inserido pelo usuario => o texto da caixa1
chavechavechavechavechave => chave da caixa2

Suponhamos que o t ( texto caixa1 ) na tabela ascii é o 2 e o c ( da chave ) vale 1. O treco tem que somar o t ( 2 ) e o c ( 1 ) e mostrar a letra que corresponde ao 3 na tabela ascii. Só que o que ele mostrar não vai ser o código da letra e sim a bendita letra, e quando ele somar uma letra com uma chave e passar do codigo do z ele tem que voltar para o a.

Só isso ( uahuhauhauh 3 semanas tentando e nada ).

Ficou explicadinho javaAdicted ? Será que agora vai ?

[]´s

J

bem, agora vai sim…
pelo o que entendi, o resultado gerado so pode ter caracteres de a minusculo a b minusculo. o codigo que eu postei la em cima faz o tal algoritmo de cifra de vigenere para todos os caracteres da tabela ascii, para fazer ele funcionar apenas para o alfabeto minusculo, eu modularizei o resultado a 26, e adicionai 97, que é o código do caractere ‘a’. ainda nao sei se vai dar totalmente certo, por isso estou implementando o descriptografador, so pra testar… :grin:
se voce quiser testar tambem, e achar algum erro, posta ele aqui que eu tento ajudar.

import javax.swing.JOptionPane;

public class Vigenere {
    public static void main( String[] args ){
         //palavra que sera encriptada
        String palavra;

         //palavra chave, que sera menor que a palavra acima
        String chave;

         //resultado da encriptacao
        String resultado = "";

        //recebe a palavra a ser encriptada
        palavra = JOptionPane.showInputDialog("Digite o texto a ser criptografado:");

        //recebe a palavra-chave
        chave = JOptionPane.showInputDialog("Insira sua chave:");

         //este laço vai percorrer toda a palavra passada
        for(int i = 0; i < palavra.length(); i++) {
             //a representacao em ascii de um caractere da palavra
             int charPalavra = palavra.charAt(i);

             /*a representacao em ascii do caractere da palavra chave equivalente ao caractere acima, como essa palavra pode ser menor que a palavra principal, o indice do caractere é modularizado, para que não haja StringIndexOutOfBounds. o operador "%" retorna o resto da divisao do primeiro pelo segundo operando*/
             int charChave = chave.charAt(i % chave.length());

             /*a soma dos caracteres acima, acredito que é isso que voce quer, e agora esta modularizada para conter apenas letras do alfabeto minusculo*/
             int result = 97 + ((charPalavra + charChave) % 26);

              //o resultado acima é concateado à String resultante
             resultado += (char) result;
       }

       //aqui é mostrada a string com a palavra criptografada
       JOptionPane.showMessageDialog(null, resultado, "Texto encriptado", JOptionPane.PLAIN_MESSAGE);
    }
}

flw

L

Exatamente isso que a gente precisa … vou instalar tudo aqui pra conseguir testar … vamo ve qq acontece…

J

outra coisa, o codido so funciona do jeito que eu to pensado se receber apenas entradas minusculas e que so tenham letras do alfabeto regular(sem acento, cedilha…)

qq coisa posta ai
flw

J

ei caras,
aquele codigo anterior nao faz o que a cifra de vigenere manda nao…ta meio errado, e se voces quiserem eu explico depois a diferença…o codigo certo é esse aqui:

import javax.swing.JOptionPane;

public class Vigenere {
    //palavra que sera encriptada
    public String palavra;
    //palavra chave, que sera menor que a palavra acima
    public String chave;
    //resultado da encriptacao
    public String resultado = "";

    public void cripto() {
        //recebe a palavra a ser encriptada
        this.palavra = JOptionPane.showInputDialog("Digite o texto a ser criptografado:");

        //recebe a palavra-chave
        this.chave = JOptionPane.showInputDialog("Insira sua chave:");

         //este laço vai percorrer toda a palavra passada
        for(int i = 0; i < palavra.length(); i++) {
             int charPalavra = palavra.charAt(i) - 97;
             
             int charChave = chave.charAt(i % chave.length()) - 97;
             
             int result = ((charPalavra + charChave) % 26) + 97;
             
             this.resultado += (char) result;
       }

       //aqui é mostrada a string com a palavra criptografada
       JOptionPane.showMessageDialog(null, this.resultado, "Texto encriptado", JOptionPane.PLAIN_MESSAGE);
    }

    public void descripto() {
    	//recebe a palavra a ser decriptada
        this.palavra = JOptionPane.showInputDialog("Digite o texto a ser descriptografado:");

        //recebe a palavra-chave
        this.chave = JOptionPane.showInputDialog("Insira a chave usada:");

         //este laço vai percorrer toda a palavra passada
        for(int i = 0; i < palavra.length(); i++) {
             int charPalavra = palavra.charAt(i) - 97;

             int charChave = chave.charAt(i % chave.length()) - 97;

             int temp = charPalavra - charChave;
             
             temp = temp < 0 ? 26 + temp : temp % 26;
             
             int result = 97 + temp;

             this.resultado += (char) result;
       }

       //aqui é mostrada a string com a palavra descriptografada
       JOptionPane.showMessageDialog(null, this.resultado, "Texto encriptado", JOptionPane.PLAIN_MESSAGE);
    }

    public void perguntar() {
        String[] possiveis = {"Criptografar", "Descriptografar"};
          int opcao = JOptionPane.showOptionDialog(null,
						"Que tipo de operação você deseja realizar?",
						" $ Cifra de Vigenere",
						JOptionPane.YES_OPTION,
						JOptionPane.PLAIN_MESSAGE,
						null,
						possiveis,
						null);
      switch (opcao) {
             case 0:
                  this.cripto();
                  break;

             case 1:
                  this.descripto();
                  break;
      }
      System.exit(0);
    }

    public static void main( String[] args ){
    	Vigenere v = new Vigenere();
        v.perguntar();
    }
}

esse vai servir melhor, deem uma olhada
flw

L

Ta perfeitinho …

Dei uma lida nos seus comentarios e ja consegui fazer o outro … esse é bem mais facil … entra com uma palavra, verifica as letras e soma +3 pra cada letra … tipo … digitando a quando criptografa vira d b vira e e assim vai …

Porém … quando digita as 3 ultimas letras ele cifra pra {|} respectivamente xyz … como faço pra manda o sem vergonha pra abc de novo ?

obs : to abusado ja héin … uhauhauh … sem querer ser chato mas ja sendo … tem como eu aumentar as linhas das caixas onde digito e mostro o texto ? deixando as 2 fixas ? Tipo 15 linhas, 20 linhas ? Se for uma coisa absurda sem problemas … se for coisa de 2 ou 3 palavrinhas sem complicar muito seria bacana … pura e exclusivamente frescura minha … mas desse jeito mesmo ta ótimo … funcionando é o que interessa.

obs2 : Ae Ruy ta vendo … é soh saber explicar q fica mais facil uahuhauhauhuahuha

Vlw javaAdicted

J

“LeoFicz”:

tem como eu aumentar as linhas das caixas onde digito e mostro o texto ? deixando as 2 fixas ? Tipo 15 linhas, 20 linhas ? Se for uma coisa absurda sem problemas … se for coisa de 2 ou 3 palavrinhas sem complicar muito seria bacana …

nao entendi bem…seria pra deixar as caixas recebendo um numero fixo de caracteres? ou pra fazer tipo uma redaçãozinha onde ta escrito Digite o texto a ser criptografado: e os outros?? se for esse ultimo é nem mais facil, embora o primeiro nao seja tao complicado…

quanto à outra pegunta, o de adicionar 3 em vez de um, acho voce precisa tambem subtrair 94 em vez de 97, jah que voce soma 3 sempre…

da uma checada nas tuas mensagens ae
flw

L

É tipo assim … não sei se tu manja de html … quando vc vai inserir uma caixa de texto em um formulario vc pode definir quantas linhas e quantas colunas ela vai ter, como no forum quando vc vai responder os topicos, essa caixa que vc digita a mensagem, tem x linhas e x colunas. A caixa do programinha tem soh 1 linha e as colunas tão variando conforme a mensagem que vc digita em cima dela ("Digite o texto … " ), a caixa de resposta do forum é fixa … não importa o quanto vc digite ela não vai mudar as colunas.

Mas isso é soh frescura minha … se for complicado nem esquenta … o principal é ta funcionando e como ta blzinha sem problemas.

O outro la tbem deu certinho … trocando o 97 pelo 94 …

Cara … agora me empolguei pra mexe em java … é muito loco …

L

Caramba … desculpa o flood … fiz caca … é o sono … mal mesmo … eu citei meu topico anterior … era pra responder … aí não da pra apagar então coloquei a resposta aqui … era pra editar o primeiro mas …

Se eu troco o 97 pelo 94 da pau no abc … mas sem problemas … vou deixar o 97 mesmo e ja é -1 pra encher o saco …

J

cara, vai complicar um pouquinho sim…
pra comecar, voce nao vai poder usar a classe JOptionPane pra entrada de dados, pelo o que entendi voce quer uma area de texto (JTextArea, em Java), pra poder encriptar um bloco de texto, neh isso? dessa forma tu tem que considerar umas complicacoes adicionais, como por exemplo, o caractere espaço e o caractere linefeed, que nao vao estar dentro desse “range” do alfabeto e provavelmente serao traduzidos de forma errada…
mesmo assim, se voce quiser, eh bom voce dar uma consultada na
API de Java, procura por:
javax.swing.JTextArea - area de texto, ou a caixa multilineada de html
javax.swing.JFrame - janela
javax.swing.JDialog - janela
javax.swing.JButton - botao
javax.swing.JLabel - selo, serve pra mostrar texto e figuras
javax.swing.JPanel - um container, melhora muito o uso de janelas

estuda sobre eventos tambem, aqui no portal deve ter um bom tutorial sobre isso…

espero ter ajudado :grin:

L

Ajudado ? Ajudo não … c salvo minha vida uhauhauhauh … vo da uma estudada naqueles trecos que vc falou la pra ver se consigo mudar o codigo … conforme for, se não explodir nada aqui eu coloco o codigo pra vc da uma olhada …

Vlw mesmo …

R

se ainda for de seu interesse, ai vai o codigo comentado:

import javax.swing.JOptionPane; 
    public static void main( String[] args ){ 
         //palavra que sera encriptada
        String palavra; 

         //palavra chave, que sera menor que a palavra acima
        String chave; 

         //resultado da encriptacao
        String resultado = ""; 

        //recebe a palavra a ser encriptada
        palavra = JOptionPane.showInputDialog("Poe seu texto ai!"); 
 
        //recebe a palavra-chave
        chave = JOptionPane.showInputDialog("Insira sua chave!"); 
        
         //este laço vai percorrer toda a palavra passada
        for(int i = 0; i < palavra.length(); i++) { 
             //a representacao em ascii de um caractere da palavra
             int charPalavra = palavra.charAt(i); 

             /*a representacao em ascii do caractere da palavra chave equivalente ao caractere acima, como essa palavra pode ser menor que a palavra principal, o indice do caractere é modularizado, para que não haja StringIndexOutOfBounds. o operador "%" retorna o resto da divisao do primeiro pelo segundo operando*/
             int charChave = chave.charAt(i % chave.length()); 

             /*a soma dos caracteres acima, acredito que é isso que voce quer, e sugiro que isso seja modularizado a 256*/
             int result = charPalavra + charChave; 
             
              //o resultado acima é concateado à String resultante 
             resultado += (char) result; 
       } 

       //aqui é mostrada a string com a palavra criptografada        
       JOptionPane.showMessageDialog(null, resultado); 

}

espero ter sido mais claro dessa vez…

cara… acredito que tenha ficado perfeito… poe ele esta tranformando em ASCII, somando, fazendo loop em cima do texto… porem… me retorna um caracter nao existente… claro… deu um valor acima de Z…

a unica coisa que eu preciso agora… é fazer um “if”… se o valor for maior de Z… ele vai subtrair o valor de Z e somar o valor de A… como faço isso???

eu soh nao entendi uma coisa… como você fez a chave percorrer pelo texto inteiro??? foi esse codigo aki?

(i % chave.length())

valew!

R

ahauhahuhuauhauha conseguiiiiii

quer dizer.. to ali.. na boca da garrafa pra pular pra fora...

fiz tuduu... soh q ele ta me retornando um valor (char) estranho... alguem me fala o q ta errado ai...

import javax.swing.JOptionPane; 
public class testinho{
    public static void main( String[] args ){ 
         
        String palavra; 

        String chave; 

        String resultado = ""; 


        palavra = JOptionPane.showInputDialog("Poe seu texto ai!"); 
        chave = JOptionPane.showInputDialog("Insira sua chave!"); 
        
        for(int i = 0; i < palavra.length(); i++) { 
             int charPalavra = palavra.charAt(i); 

             int charChave = chave.charAt(i % chave.length()); 

             int result = charPalavra + charChave; 
             
             if ( result >= 123){
             	result = ( result - 122) + 97;
             }
              
             resultado += (char) result; 
       } 

       JOptionPane.showMessageDialog(null, resultado); 
}
}
L

Falando em não entender, tem só 2 ou 3 coisinhas q não entendi bem … da uma olhada :

public void cripto() {

Q desgraça é esse void ? É tipo uma função ? tipo function cripto () { é isso ?

for(int i = 0; i < palavra.length(); i++) { 
             int charPalavra = palavra.charAt(i) - 97;

int charChave = chave.charAt(i % chave.length()) - 97

E isso aqui ? O i é um contador q vai percorrer o texto digitado, chave é uma variavel, q ta sendo transformada em ascii ( é mesmo ? ) e pegando a letra q ele ta contando no texto q foi digitado e dividindo pelo tamanho da chave ? Ta certo isso ???

M

[color=“green”]Oi Leo,

Não entendi bem essa sua dúvida mas esse void tá dizendo q a função cripto não retorna nenhum valor… se não me engano é isso… a sua dúvida era essa mesmo??? :roll: [/color]

R
"LeoFicz":
Falando em não entender, tem só 2 ou 3 coisinhas q não entendi bem ... da uma olhada :
public void cripto() {

Q desgraça é esse void ? É tipo uma função ? tipo function cripto () { é isso ?

for(int i = 0; i < palavra.length(); i++) { 
             int charPalavra = palavra.charAt(i) - 97;

int charChave = chave.charAt(i % chave.length()) - 97

E isso aqui ? O i é um contador q vai percorrer o texto digitado, chave é uma variavel, q ta sendo transformada em ascii ( é mesmo ? ) e pegando a letra q ele ta contando no texto q foi digitado e dividindo pelo tamanho da chave ? Ta certo isso ???

ae leo... arrumei o codigo!! ta funcionando direitinho, nem acredito!!1 uhahuahuauh

soh tem um problema... olhem meu codigo!!

import javax.swing.JOptionPane; 
public class testinho{
    public static void main( String[] args ){ 
         
        String palavra; 

        String chave; 

        String resultado = ""; 


        palavra = JOptionPane.showInputDialog("Poe seu texto ai!"); 
        chave = JOptionPane.showInputDialog("Insira sua chave!"); 
        
        for(int i = 0; i < palavra.length(); i++) { 
             int charPalavra = palavra.charAt(i); 

             int charChave = chave.charAt(i % chave.length()); 

             int result = charPalavra + charChave; 

             result = result;

             if ( result >= 123){ 
              result = ( result - 122) + 97; 
             } 

             if ( result >= 123){ 
              result = ( result - 122) + 97; 
             } 
             
             if ( result >= 123){ 
              result = ( result - 122) + 97; 
             } 
             
             if ( result >= 123){ 
              result = ( result - 122) + 97; 
             } 

             if ( result >= 123){ 
              result = ( result - 122) + 97; 
             } 
             
             if ( result >= 123){ 
              result = ( result - 122) + 97; 
             } 
             
             if ( result >= 123){ 
              result = ( result - 122) + 97; 
             } 
             resultado += (char) result; 
       
       }
       JOptionPane.showMessageDialog(null, resultado); 
}
}

taum vendo a repetição de if neh??? certo... essa foi a unica maneira que encontrei para jogar o result dentro dos chars...

mas como faço pra transformar akilo em um "if" só???

bom.. pelo menos assim ele ta funcionando!! nem acredito!! meu primeiro programa em java!! auhhuahuahuahu

L

Ae ruy … vo salva sua vida ok ? O javaAdicted posto um código antes que criptografava e descriptografava a paradinha … eu dei uma enxugada naquele e botei só pra criptografa … da um bizu …
O que eu fiz foi colocar um -11 alih onde diz int crip bla bla bla … da funcionando certinho esse ( só 1 duvida … ele pega as letras do texto q o cara colocou e soma com as letras da chave né ? tipo problema como texto e chave como chave ele pega o p e soma com o c … suponhamos q p é 10 e c é 5 da 15 e ele mostra a letra correspondente a posiçao 15 … é isso ? ) Se quiser coloco o de cesar tbem … sem if sem nada ae pra dar uma ajuda …

Oi Marcela … tudo bom ? É a dúvida que eu tinha era isso mesmo … saber o que era o void … então ve se ta certo por favor :

o public cria a função
e o void diz que essa função não retorna nada

( acho q não é bem isso não ) é que to me baseando em javascript, asp essas coisas … que pra criar uma função vc faz function nome_da_função. É por aí ou passei longe ???

Ah … outra coisinha provavelmente rapida ( agora vai começar aparecer duvida q não acaba mais ). O sinal % alih no meio do código o javaAdicted comentou dizendo que era o resto da divisão de algo por algo … como é isso ? Se der um desenho ou algo assim vai funcionar melhor que não sou muito esperto não uhauahuhauha …

Brigado.

import javax.swing.JOptionPane; 

public class Main { 
    public static void main( String[] args ){ 
         //palavra que sera encriptada 
        String texto; 

         //palavra chave, que sera menor que a palavra acima 
        String chave; 

         //resultado da encriptacao 
        String textoCrip = ""; 

        //recebe a palavra a ser encriptada 
        texto = JOptionPane.showInputDialog("ATENÇÃO : Para digitar seu texto, utilize" +
        " apenas caracteres minusculos e sem acento :"); 

        //recebe a palavra-chave 
        chave = JOptionPane.showInputDialog("ATENÇÃO : Para digitar sua chave, utilize" +
                " apenas caracteres minusculos e sem acento :"); 

         //este laço vai percorrer toda a palavra passada 
        for(int i = 0; i < texto.length(); i++) { 
             //a representacao em ascii de um caractere da palavra 
             int charTexto = texto.charAt(i); 

             /*a representacao em ascii do caractere da palavra chave equivalente ao caractere acima, como essa palavra pode ser menor que a palavra principal, o indice do caractere é modularizado, para que não haja StringIndexOutOfBounds. o operador "%" retorna o resto da divisao do primeiro pelo segundo operando*/ 
             int charChave = chave.charAt(i % chave.length()); 

             /*a soma dos caracteres acima, acredito que é isso que voce quer, e agora esta modularizada para conter apenas letras do alfabeto minusculo*/ 
             int crip = 97 + ((charTexto + charChave) - 11 ) % 26; 

              //o resultado acima é concateado à String resultante 
             textoCrip += (char) crip; 
       } 

       //aqui é mostrada a string com a palavra criptografada 
       JOptionPane.showMessageDialog(null, textoCrip, "Texto Criptografado", JOptionPane.PLAIN_MESSAGE); 
    } 
}
R
"LeoFicz":
Ae ruy ... vo salva sua vida ok ? O javaAdicted posto um código antes que criptografava e descriptografava a paradinha ... eu dei uma enxugada naquele e botei só pra criptografa ... da um bizu ... O que eu fiz foi colocar um -11 alih onde diz int crip bla bla bla ... da funcionando certinho esse ( só 1 duvida ... ele pega as letras do texto q o cara colocou e soma com as letras da chave né ? tipo problema como texto e chave como chave ele pega o p e soma com o c ... suponhamos q p é 10 e c é 5 da 15 e ele mostra a letra correspondente a posiçao 15 ... é isso ? ) Se quiser coloco o de cesar tbem ... sem if sem nada ae pra dar uma ajuda ...

Oi Marcela ... tudo bom ? É a dúvida que eu tinha era isso mesmo ... saber o que era o void ... então ve se ta certo por favor :

o public cria a função
e o void diz que essa função não retorna nada

( acho q não é bem isso não ) é que to me baseando em javascript, asp essas coisas ... que pra criar uma função vc faz function nome_da_função. É por aí ou passei longe ???

Ah ... outra coisinha provavelmente rapida ( agora vai começar aparecer duvida q não acaba mais ). O sinal % alih no meio do código o javaAdicted comentou dizendo que era o resto da divisão de algo por algo ... como é isso ? Se der um desenho ou algo assim vai funcionar melhor que não sou muito esperto não uhauahuhauha ...

Brigado.

import javax.swing.JOptionPane; 

public class Main { 
    public static void main( String[] args ){ 
         //palavra que sera encriptada 
        String texto; 

         //palavra chave, que sera menor que a palavra acima 
        String chave; 

         //resultado da encriptacao 
        String textoCrip = ""; 

        //recebe a palavra a ser encriptada 
        texto = JOptionPane.showInputDialog("ATENÇÃO : Para digitar seu texto, utilize" +
        " apenas caracteres minusculos e sem acento :"); 

        //recebe a palavra-chave 
        chave = JOptionPane.showInputDialog("ATENÇÃO : Para digitar sua chave, utilize" +
                " apenas caracteres minusculos e sem acento :"); 

         //este laço vai percorrer toda a palavra passada 
        for(int i = 0; i < texto.length(); i++) { 
             //a representacao em ascii de um caractere da palavra 
             int charTexto = texto.charAt(i); 

             /*a representacao em ascii do caractere da palavra chave equivalente ao caractere acima, como essa palavra pode ser menor que a palavra principal, o indice do caractere é modularizado, para que não haja StringIndexOutOfBounds. o operador "%" retorna o resto da divisao do primeiro pelo segundo operando*/ 
             int charChave = chave.charAt(i % chave.length()); 

             /*a soma dos caracteres acima, acredito que é isso que voce quer, e agora esta modularizada para conter apenas letras do alfabeto minusculo*/ 
             int crip = 97 + ((charTexto + charChave) - 11 ) % 26; 

              //o resultado acima é concateado à String resultante 
             textoCrip += (char) crip; 
       } 

       //aqui é mostrada a string com a palavra criptografada 
       JOptionPane.showMessageDialog(null, textoCrip, "Texto Criptografado", JOptionPane.PLAIN_MESSAGE); 
    } 
}

iae Leo.. é o seguinte.. to a 3 semana aki fazendo do zero.. e nao entendendo qse nada.. uhahuahuhua ai peguei e montei akele codigo que postei aki.. ele ta clean demais... mto simples, e rodando direito (porem com alguns erros.. mas o bixa do Ricardo nem vai falar nada...)

quanto a sua pergunta.. sim.. ele transforma os caracteres do texto e da chave para ASCII (valores), e soma... porem... como A vale 97 e Z vale 122 qndo vc somar vai dar um ASCII inexistente... ai tem q fazer uma conta para trazer ele para entre A e Z... o javaadnumseioq coloco uma conta que nao entendi... a minha conta ta certa.. mas nao ta fazendo o looping.. nao sei pq.... mas ta dando certinho.. nem tentei o dele...

qto a de cezar.. fiz em 2 minutos... ta aki o codigo caso interesse!

import javax.swing.JOptionPane; 
public class mais{
    public static void main( String[] args ){ 
         
        String palavra; 

        String resultado = ""; 


        palavra = JOptionPane.showInputDialog("Insira seu texto!"); 
                
        for(int i = 0; i < palavra.length(); i++) { 
             int charPalavra = palavra.charAt(i); 

             
             int temp = charPalavra + 3; 
             
             if ( result >= 123){
             	result = ( result - 122 + 97  );
             }
                         
                           
             resultado += (char) result; 
        
}
       JOptionPane.showMessageDialog(null, resultado); 
}
}

quanto a sua pergunta sobre o void... eh realmente isso... zoia ai...

public - Cada programa Java consiste em pelo menos uma definição de classe que é definida pelo programador, no caso, você. Essas classes são conhecidas como classes definidas pelos programador ou classes definidas pelo usuário.

A palavra chave void indica que esse método realizará uma
tarefa, mas não retornará nenhuma informação.

tirei de um tutorial.. tb nao entendi mto bem.. mas enfim...

L

Hmmmm maravilha … entendi ja … blz …

Cata esse código q eu postei alih e roda ele pra vc ver … funciona bunitinho … do dando uma olhada no seu aqui pra ver se consigo enxuga ele … mas só pra este tenta com else …

if blablabla {

blebleble

} else {

bliblibli

} else {

blobloblo

}

ele verifica o blablabla e faz blebleble aih else ( senão ) faz bliblibli else ( senão ) blobloblo e ai vai … não sei se java tem select case q fica mais facil ainda … e tbem não sei se a estrutura ta certa … faz muito tempo … muito mesmo q não mexo com if else ou select case …

M

[color=“green”]Ae Leo,

Tentando tirar sua dúvida:

:arrow: public é um modificador de acesso, ou seja, esse método, ou variável, ou classe, vai poder ser acessado em qq lugar do programa q tenha uma referência a esse objeto, entendeu? Se vc não quiser q isso aconteça, vc usa o modificador private.

:arrow: quanto ao %, eu não sei onde foi q o JavaAdicted usou… por isso não posso ajudar muito. Se quiser coloca o pedaço do código q ele usou isso aqui q eu tento ser mais precisa. Pois bem, o % é o famoso mod, já ouviu falar??? Ele te retorna o resto da operação. Ex: 5 mod 2 = 1 (porque 5 dividido por 2 é igual é 2 e sobra 1, certo?). Em java vc utiliza: 5% 2 = 1… entendeu???

Nossa… como professora eu sou uma negação… foi mal hein!? :oops: [/color]

L

Ahhhhhhhhhhhhhhhhhhhhhhh … entendi … então quando vc usa por exemplo public variavel … essa variavel vai poder ser usada em qualquer outra parte do programa sem precisar ser declarada de novo.

O % entendi tbem … facinho facinho … era o q eu tava pensando mesmo … olha o código :

int charChave = chave.charAt(i % chave.length())

Esse i é um contador, chave é uma palavra que vai ser digitada por quem for usar o programa. Ele vai dividir o i pelo tamanho da chave e usar só o resto dessa divisão …

Fazer isso em java é absurdamente mais facil que em javascript … meu deus do céu … fiquei umas 3 semanas tentando em javascript e nada … malditos formularios.

M

[color=“green”]Aeeeeeeeeeee Leo… é mais ou menos por aí mesmo. :wink:

Olha só, pq vc não compra um livro??? Vai te ajudar muito. Eu comprei o do Deitel e não tenho do q reclamar até agora (ainda não li todo).

E qq dúvida é só perguntar, pq se eu não puder te ajudar eu tenho certeza q vai ter uma boa alma q vai fazer isso. :lol: [/color]

L

Opa … maravilha … amanhã vo da uma olhada no shopping … gostei pra caramba de java …

Ah … e brigado ae vc e todo mundo que ajudou … foi o ÚNICO de 8 fóruns que consegui ajuda …

J

eh isso ae cara…qq duvida voce posta aqui…e foi mal pela ausencia, mas eu tava 110% ocupado com meus trabalhos de faculdade…
flw

R

É galera… depois de 100 e poucas respostas… mais de 600 visualizaçoes (mais de 200 saum minhas!! rs), e mtas quebranças de cabeça… consegui terminar o codigo… nao to com ele aqui pq to na facul.,… mas funcionou direitinho e me fez entender um pouco de java, o que tbm me fez interessar por ele…

brigadaum mesmo, pode ter certeza que agora que conheci java e o PJ… vou estar por aki sempre… vou comprar o livro e me dedicar…

valew pessoal, nao vou citar nomes pq esqueci… rss… mas todos que me ajudaram!!

abraços!

R

alguem podia explicar o codigo aqi postado correcto ponto por ponto ou entao postar um codigo mais simples q faça os mesmo, pq axo q ainda n estudei por exemplo “javax.swing.JOptionPane” isto. e tb n sei como mudar o aspecto as janelas( as janelas que ele pergunta quando e pa meter o texto)

agradecia respostas urgentes

comprimentos

Anime

Oi,

Da uma olhadinha nos links, vai aprender a inserir os dados com JOptionPane…

http://javaelinux.wordpress.com/2010/07/21/tutorial-java-aula-4-entrada-de-dados-em-java-com-joptionpane/

http://www.tiexpert.net/programacao/java/joptionpane.php

Boa sorte!

R

e se possivel postaram um codigo sem JOptionPane.showInputDialog e charAT pq ainda n sei bem

urgente people

respostas aguardo

vou ver os links pa ver se aprendo algo

obrigado

R

import javax.swing.JOptionPane;

public class Vigenere {

//palavra que sera encriptada

public String palavra;

//palavra chave, que sera menor que a palavra acima

public String chave;

//resultado da encriptacao

public String resultado = “”;
public void cripto() {  
     //recebe a palavra a ser encriptada  
       this.palavra = JOptionPane.showInputDialog("Digite o texto a ser criptografado:");  
 
       //recebe a palavra-chave  
       this.chave = JOptionPane.showInputDialog("Insira sua chave:");  

       //este ciclo vai percorrer toda a palavra passada  
       for(int i = 0; i < palavra.length(); i++) {  
            int charPalavra = palavra.charAt(i) - 97;  
              
            int charChave = chave.charAt(i % chave.length()) - 97;  
              
            int result = ((charPalavra + charChave) % 26) + 97;  
             
            this.resultado += (char) result;  
     }  

      //aqui é mostrada a string com a palavra criptografada  
      JOptionPane.showMessageDialog(null, this.resultado, "Texto encriptado", JOptionPane.PLAIN_MESSAGE);  
   }  
 
  public void descripto() {  
       //recebe a palavra a ser decriptada  
       this.palavra = JOptionPane.showInputDialog("Digite o texto a ser descriptografado:");  
 
       //recebe a palavra-chave  
       this.chave = JOptionPane.showInputDialog("Insira a chave usada:");  

        //este laço vai percorrer toda a palavra passada  
      for(int i = 0; i < palavra.length(); i++) {  
           int charPalavra = palavra.charAt(i) - 97;  
 
            int charChave = chave.charAt(i % chave.length()) - 97;  

            int temp = charPalavra - charChave;  
             
            temp = temp < 0 ? 26 + temp : temp % 26;  
            
            int result = 97 + temp;  
 
            this.resultado += (char) result;  
      }  
 
      //aqui é mostrada a string com a palavra descriptografada  
      JOptionPane.showMessageDialog(null, this.resultado, "Texto encriptado", JOptionPane.PLAIN_MESSAGE);  
   }  
 
   public void perguntar() {  
       String[] possiveis = {"Criptografar", "Descriptografar"};  
         int opcao = JOptionPane.showOptionDialog(null,  
                       "Que tipo de operação você deseja realizar?",  
                       " $ Cifra de Vigenere",  
                       JOptionPane.YES_OPTION,  
                       JOptionPane.PLAIN_MESSAGE,  
                       null,  
                       possiveis,  
                      null);  
     switch (opcao) {  
            case 0:  
                 this.cripto();  
                 break;  
 
            case 1:  
                 this.descripto();  
                 break;  
     }  
     System.exit(0);  
   }  
 
   public static void main( String[] args ){  
     Vigenere v = new Vigenere();  
       v.perguntar();  
   }

}

o que faz aqui o charAT

no metodo do public void descripto o ciclo esta a dar dor de cabeça -.- alguem detalha todo ele, passo a passo?

R

oi preciso mesmo de ajuda urgente

agradeço

ViniGodoy

Olá. É falta de educação ficar pedindo urgência em fóruns. No Brasil, hoje é feriado, provavelmente pouca gente irá ler os tópicos.

Além disso, quando for postar códigos, por favor, use a tag code:

Finalmente, procure explicar melhor sua dúvida. Ninguém vai pegar um código daqui e parar para te explicar linha-a-linha, ou montar um exemplo mais simples.

R

peço desculpa entao

brigado na mesma, e que ha algumas duvidas q nao saem ^^’

ViniGodoy

Seria importante dizer, por exemplo, o que você quer fazer.

Isso é algum trabalho que seu professor pediu? Qual o objetivo do programa que você quer construir?
Qual é o problema que você precisa resolver? E o que você já sabe de Java?

R

o professor pediu. temos de fazer a cifra de vigenere. aceita uma palavra a chave e ele codifica ou descodifica. ja postaram o codigo direito para o problema como o q eu postei mas ha coisas que ainda n percebo. é que fazer o codigo do zero nao percebo assim tanto ainda nao

ViniGodoy

Você já tentou fazer alguma coisa? Posta aí seu código.

R

ainda comecei nao ta dificil…eu vi aqui este codigo que postei e tou a tentar entende -lo

R

[b]# for(int i = 0; i < palavra.length(); i++) {

int charPalavra = palavra.charAt(i) - 97;

int charChave = chave.charAt(i % chave.length()) - 97;

int result = ((charPalavra + charChave) % 26) + 97;

this.resultado += (char) result;

alguem sabe dizer mais detalhado o que faz este ciclo na cifra de vigenere?

R

alguem podia explicar o que faz detalhado este codigo acima por favor?

R

Alguem consegue fazer em vez de colocarmos a chave e o texto para cifrar, colocar o texto ja cifrado e o programa devolver a mensagem original e a chave que a originou?

R

alguem sabe por favor como isto se faz?

comprimentos ;p

R
tentando entender.. corrigi o que pude aqui ...
import javax.swing.JOptionPane;
public class Criptografa {
public static void main( String[] args ) {
String texto;
char x;
int valorA = 'A';
texto = JOptionPane.showInputDialog( " Insira seu texto! " );


JOptionPane.showMessageDialog(null, "O texto em ASCII é" + texto);
System.exit(0);
}
}

http://www.asciitable.com/index/asciifull.gif

tabela ascii acima...

"a" é igual a 65 ou 97 (dependo do maiusculo ou nao), é isso que vc quer?

... transformar este texto nos numeros correspondentes em ASCII ?

da para fazer manual, inserindo todos os correspondentes e comparando... por exemplo... nao sei se tem biblioteca pronta para isto...

U

Não é correto fazer o código para você, mais se for concatenar os indíces ASCII está ai, a melhor forma é por array.

import javax.swing.JOptionPane;   
public class Criptografia {   
   public static void main( String[] args ) {                                     
	String text = JOptionPane.showInputDialog("Insira seu texto!:");   
	int[] ascii = new int[text.length()];
	String newString = "";
	 
	for(int i = 0; i < text.length(); i++){  	
		char ref = (char) text.charAt(i); 
		ascii[i] = ref;
		newString += ascii[i];
	} 
	JOptionPane.showMessageDialog(null, newString);
    }   
}
Vinicius_Zibetti_Res
ruylokoPJ:
O codigo segue abaixo... porem uma explicaçao do que tentei fazer ai... abrir uma caixa onde vc insere um texto simples.. ele transforma em ASCII e mostra pra vc em outra caixa....

euu acredito que errei ali na parte do string.. nao soube quando colocar o que...

me ajudem? :roll:

import javax.swing.JOptionPane; public class Criptografa { public static void main( String[] args ) {

String texto;
char x;
int valorA = 'A';

texto = JOptionPane.showInputDialog( " Insira seu texto! " );



JOptionPane.showMessageDialog( null,
"O texto em ASCII é" + texto,
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );

}

}

Aqui corrigido:

import javax.swing.JOptionPane; 
public class Criptografa { 
   public static void main( String[] args ) { 


      String texto;
      char x;
      Integer x = Integer.parseInt("A");
                        
      texto = JOptionPane.showInputDialog( " Insira seu texto! " ); 
      
                   
     
    JOptionPane.showMessageDialog( null, 
         "O texto em ASCII é" + texto,  
        JOptionPane.INFORMATION_MESSAGE ); 
      System.exit( 0 );

   }

 }
R

Obrigado.

Vou ver se consigo encaixar no resto do código a ver se faz melhor o que eu pretendo!

Comprimentos.

A

Pessoal, minha dúvida é o seguinte...
Quero colocar em um campo jtextfield o último número de "id" do meu banco de dados de cliente.
Coloquei comentario" // AKI <- <<<<<<<<<<<" nos campos que tratam diretamente esse assunto no codigo.
no momento consta um erro que nao permite compilar.. gostaria da ajuda de vc pra saber como devo colocar no codigo.
grato.

public class CadastroCliente {
	private int codigoCliente;
	private String nomeCliente;

	public int getCodigoCliente() {
		int codcliente = CadastroClienteDAO.getLastId();       // AKI <- <<<<<<<<<<<		
                                this.codigoCliente = codcliente;
		return codigoCliente;
	}

	public void setCodigoCliente(int codigoCliente) {
		this.codigoCliente = codigoCliente;
	}

	public String getNomeCliente() {

		String nomeDoCliente = CadastroClienteGraf.getJTextFieldNome().getText();
		this.nomeCliente = nomeDoCliente;
		return nomeCliente;
	}

	public void setNomeCliente(String nomeCliente) {
		this.nomeCliente = nomeCliente;
	}
}


public class CadastroClienteDAO {

	private static Connection conexao;

	public CadastroClienteDAO() throws SQLException {
		this.conexao = FabricaConexao.getConexao();
	}

	public void adiciona(CadastroCliente cadasClient) throws SQLException {
		PreparedStatement stmt = (PreparedStatement) this.conexao
				.prepareStatement("insert into cliente (nomeCliente, cpfCliente, ufCliente) values (?,?,?)");
		stmt.setString(1, cadasClient.getNomeCliente());
		stmt.setString(2, cadasClient.getCPFcliente());
		stmt.setString(3, cadasClient.getUFcliente());
		stmt.execute();
		stmt.close();
	}

	public List selecionar(CadastroCliente cadasClient) throws SQLException {
		PreparedStatement sql = (PreparedStatement) this.conexao
				.prepareStatement("select nomeCliente from cliente where codigoCliente = " + cadasClient.getCodigoCliente());
		ResultSet rs = sql.executeQuery();
		
                                // CRIA OBEJTO LISTACONTATO DO TIPO LIST RESPONSAVEL POR ARMAZENAR TODOS
		// OS REGISTRO QUE FOREM SELECIONADOS NO CASO 1 SO
		List<CadastroCliente> listaCliente = new ArrayList<CadastroCliente>();
		while (rs.next()) {
			// cria objeto temporario cadastro
			CadastroCliente cadasClientTemp = new CadastroCliente();
			// instancia o objeto
			cadasClientTemp.setNomeCliente(rs.getString("nomefornecedor"));
			// insere dados na lista
			listaCliente.add(cadasClientTemp);
			System.out.println(listaCliente);
		}
		// fecha recordset
		rs.close();
		// fecha statement
		sql.close();
		return listaCliente;
	}
	
	//PEGAR O ULTIMO CODIGOCLIENTE DA TABELA CLIENTE  	
	public static int getLastId() throws SQLException{                                  // AKI <- <<<<<<<<<<<
		String sql = "SELECT MAX(codigoCliente) as codigoCliente FROM CLIENTE"; 
		PreparedStatement stmt = (PreparedStatement) conexao.prepareStatement(sql); 
		ResultSet rs = stmt.executeQuery(); 
		rs.next(); 
		int lastId = rs.getInt("id"); 

		rs.close(); 
		stmt.close(); 

		return lastId; 
		} 
	// METODO RESPONSAVEL POR ALTERAR DADOS NA TABELA FORNECEDOR
	public void alterar(CadastroCliente cadasClient) throws SQLException {
		// prepared statement para inserção
		PreparedStatement sql = (PreparedStatement) this.conexao.prepareStatement("update cliente set nome = '"
				+ cadasClient.getNomeCliente());
		sql.executeUpdate();
	}

	// METODO RESPONSAVEL POR DELETAR DADOS NA TABELA CADASTRO
	public void deletar(CadastroCliente cadasClient) throws SQLException {
		PreparedStatement sql = (PreparedStatement) this.conexao.prepareStatement("delete from cadastro where codigo = "
						+ cadasClient.getCodigoCliente());
		sql.executeUpdate();
	}
}


public class CadastroClienteGraf extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JLabel Label_CodigoCliente = null;
	private JLabel Label_NomeCliente = null;
	private JTextField JTextFieldCodigoCliente = null;
	private static JTextField JTextFieldNome = null;
	private JButton BotaoSalvarCliente = null;

	public CadastroClienteGraf() {
		super();
		initialize();
	}

	private void initialize() {
		this.setSize(538, 271);
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
	}

	private JPanel getJContentPane() {
		if (jContentPane == null) {
			Label_NomeCliente = new JLabel();
			Label_NomeCliente.setBounds(new Rectangle(146, 25, 114, 16));
			Label_NomeCliente.setText("Nome/Razão Social:");
			Label_CodigoCliente = new JLabel();
			Label_CodigoCliente.setBounds(new Rectangle(12, 22, 46, 16));
			Label_CodigoCliente.setText("Codigo:");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(Label_CodigoCliente, null);
			jContentPane.add(Label_NomeCliente, null);
			jContentPane.add(getJTextFieldCodigoCliente(), null);
			jContentPane.add(getJTextFieldNome(), null);
			jContentPane.add(getBotaoSalvarCliente(), null);
		}
		return jContentPane;
	}

                private JTextField getJTextFieldCodigoCliente() {                          // AKI <- <<<<<<<<<<<
		if (JTextFieldCodigoCliente == null) {
			JTextFieldCodigoCliente = new JTextField(CadastroCliente.getCodigoCliente());
			JTextFieldCodigoCliente.setBounds(new Rectangle(59, 22, 79, 20));
		}
		return JTextFieldCodigoCliente;
	}
	static JTextField getJTextFieldNome() {
		if (JTextFieldNome == null) {
			JTextFieldNome = new JTextField();
			JTextFieldNome.setBounds(new Rectangle(265, 25, 250, 20));

		}
		return JTextFieldNome;
	}

	private JButton getBotaoSalvarCliente() {
		if (BotaoSalvarCliente == null) {
			BotaoSalvarCliente = new JButton();
			BotaoSalvarCliente.setBounds(new Rectangle(30, 170, 86, 42));
			BotaoSalvarCliente.setText("Salvar");
			BotaoSalvarCliente
					.addActionListener(new java.awt.event.ActionListener() {
						public void actionPerformed(
								java.awt.event.ActionEvent evt) {
							try {
								CadastroCliente cadasClient = new CadastroCliente();
								CadastroClienteDAO dao = new CadastroClienteDAO();

								// / trabalhar no codigo pra salvar mais coisas
								cadasClient.setNomeCliente(getJTextFieldNome().getText());

								dao.adiciona(cadasClient);

								System.out.println("Gravado");
							} catch (SQLException e) {
								e.printStackTrace();
							}
						}
					});
		}
		return BotaoSalvarCliente;
	}
}
R

muito obrigado pelo código embora não faça o que eu precisava.

gostava de saber se consegue como eu precisava. tenho de fazer a cifra de vigenere e o que tenho de fazer é: digitar o texto a ser descriptografado e devolver o texto encriptado e a chave que o originou.

R

Alguem sabe?

Comprimentos

R

?

R

alguem sabe tambem como ler os dados dos dum ficheiro e guardá-los numa estrutura de dados
adequada?

cumprimentos

Criado 10 de maio de 2005
Ultima resposta 28 de mai. de 2011
Respostas 127
Participantes 15