|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Nov 2015
Messaggi: 7
|
DO WHILE JAVA
Ciao a tutti,io sto facendo un programma con il do-while sul cifrario di cesare dove praticamente l'utente ha due possibilità:
1-il programma chiede una stringa e il valore preso in considerazione per cambiare i valori delle lettere e di conseguenza cambiarle e stampa la stringa Criptata. 2-il contrario,cioè chiede una stringa criptata,il valore della criptazione e stampa la stringa Decriptata. Poi richiede all'infinito le due possibilità finchè non si esce dal programma. Il problema è che una volta avviato il programma e svolto una delle due operazioni quando il programma richiede cosa fare funziona tutto tranne la stampa,cioè chiede la stringa e chiede il valore ma non stampa su video. Questo è il codice,ditemi dov'è l'errore o se avete consigli a riguardo. import javax.swing.JOptionPane; public class I08ESE01{ public static void main( String args[] ){ char c1; int scelta=0; int posizione=0; scelta=Integer.parseInt(JOptionPane.showInputDialog(null,"Scegliere un numero corrispondente a una delle opzioni:\n1 - Cript\n2 - Decript\n3 - Quit")); do{ if (scelta == 1) { int k=Integer.parseInt(JOptionPane.showInputDialog(null,"Inserire il valore di criptazione")); String s1=JOptionPane.showInputDialog(null,"Inserire la stringa da criptare"); while(posizione!=s1.length()){ c1=s1.charAt(posizione); if(c1>=' ' && c1<='~') { if (c1+k>126) { int resto=c1+k-126-1; int val=32+resto; c1=(char)val; System.out.print("" + c1); posizione++; } else{ c1+=k; System.out.print("" + c1); posizione++; } } } } if (scelta == 2) { int k=Integer.parseInt(JOptionPane.showInputDialog(null,"Inserire il valore di criptazione")); String s1=JOptionPane.showInputDialog(null,"Inserire la stringa da criptare"); while(posizione!=s1.length()){ c1=s1.charAt(posizione); if(c1>=' ' && c1<='~') { if (c1-k<32) { int resto=c1-k-32+1; int val=126+resto; c1=(char)val; System.out.print("" + c1); posizione++; } else{ c1-=k; System.out.print("" + c1); posizione++; } } } } scelta=Integer.parseInt(JOptionPane.showInputDialog(null,"Scegliere un numero corrispondente a una delle opzioni:\n1 - Cript\n2 - Decript\n3 - Quit")); }while((scelta==1)||(scelta==2)); } } GRAZIE IN ANTICIPO Ultima modifica di lorensiccome : 02-12-2016 alle 19:18. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Ci sono un po' di cose da rivedere.
La prima e' relativa alla variabile "posizione": assegni un valore all'inizio e poi la incrementi senza mai resettarla. Nei cicli successivi ovviamente il suo valore e' errato
__________________
In God we trust; all others bring data |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:41.



















