Do While Switch

Disap

Mitglied
Hallo.

Ich möchte eine Switchabfrage programmieren, die sich immer wieder aufruft, bis ich eine Zahl größer 4 eingebe. Der Quellcode zickt aber rum

Code:
import javax.swing.JOptionPane;

public class DoWhile {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
//		int i=1; //Duplikat
		
		do{
			
			System.out.println("1 bis 3: Test");
			System.out.println("4: Ende");
			String s = JOptionPane.showInputDialog( "Geben Sie eine beliebige Zahl ein" ); 
			int i = Integer.parseInt( s ); 
		  

			switch ( i ) 
			{ 
		    case 1: 
		      System.out.println(".......Test Test Test...."); 
		      break; 
		    default:
		      System.out.println("Ende");
		      break;
			}
		}while ( i < 4); //i cannot be resolved

	}

}

Entweder sagt der mir beim while unten, dass i nicht resolved werden kann, oder wenn ich schon vorher ein i definiere, sagt der dass das ein Duplikat ist. Vorher ein i zu definieren, macht keinen Sinn aber warum kann das i nicht resolved werden?

Besten Dank,
Disap
 
Hi,

Du hast i zweimal deklariert! Einmal in der Schleife, und einmal außerhalb. Da der Grundsatz "je lokaler desto sichtbarer" gilt, wird innerhalb der Schleife mit dem inneren i gearbeitet, in der Testbedingung jedoch mit dem äußeren. Einfach das "int i = " in der Schleife durch "i = " ersetzten, dann sollte es gehen....

Gruß

Jo
 
Hallo,

soweit ich weiß, ist das i, das Du in der While-Schleife deklarierst auch nur innerhalb der Schleife gültig. Also wenn Du es einfach vorher deklarierst sollte Dein Problem gelöst sein.

gruß Klaus.
 
Hallo,

also wie meine Vorredner schon richtig gesagt haben, darfst du das i nur eimal deklarieren.

Code:
int i = Integer.parseInt( s );
Lass an dieser Stelle einfach das int weg, dann müsste es funktionieren, solange du im Dialog keinen Wert eingibst der >= 4.

Code:
i = Integer.parseInt( s );


MFG

zEriX
 
Zurück