PDA

View Full Version : DO WHILE JAVA


lorensiccome
02-12-2016, 17:55
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

sottovento
03-12-2016, 04:31
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