2014-11-25 32 views
5

Dün for-döngüler için Java'daki virgül operatörünü okudum. Onları beklediğim gibi çalıştı. Bu yapıyı düşündüm ama beklendiği gibi çalışmıyor.Do {}, virgül operatörüyle iken, bu mümkün mü?

';' expected 
     } while((userInput < 1 || userInput > 3), wrongInput = true); 

';' expected 
     } while((userInput < 1 || userInput > 3), wrongInput = true); 

Benim fikrim bir hata mesajı görüntülenir sonraki yineleme sırasında boole wrongInput böylece true ayarlı olmalı, tek tekrarlanmasından sonra userInput eğer 1 ile 3 arasında değildi. userInput'un geçersiz olduğunu belirten.

private int askUserToSelectDifficulty() { 
    int userInput; 
    Boolean wrongInput = false; 

    do{ 
     if(wrongInput) println("\n\t Wrong input: possible selection 1, 2 or 3"); 
     userInput = readInt(); 
    } while((userInput < 1 || userInput > 3), wrongInput = true); 

    return userInput; 
} 

hayal olduğunu, bu geçersiz sözdizimi olduğunu, bir for döngüsü koşullu kısmına denk içindedir belki. Koşullu bölümde bir virgül operatörü kullanamazsınız? Virgülle operatör gördük nerede

örnekleri için döngüler kullanılmaktadır: Giving multiple conditions in for loop in Java Java - comma operator outside for loop declaration

+1

java operatörleri bakmak - https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html – Joseph118

+1

ve koma bu örnekler Joseph118 @ birden çok değer AMA değil koşullar – Joseph118

+0

atamak için kullanılmaktadır NPE'nin zaten işaret ettiği gibi, Java'daki bir operatör olmadığını bilmek güzel. Gerçekten dokümantasyonda değil. – Joop

cevap

1

(her durumda değil C/C++ anlamda) Java virgül işlemi mevcut değildir. Bir kerede birden fazla şeyi bir virgül kullanarak bildirip başlatabileceğiniz bazı bağlamlar vardır, ancak bu, örneğinizdeki gibi başka içeriklere genelleme yapmaz. ifadeye

bir yolu döngü böylece gibidir:

while (true) { 
    userInput = readInt(); 
    if (userInput >= 1 && userInput <= 3) { 
     break; 
    } 
    println("\n\t Wrong input: possible selection 1, 2 or 3"); 
}; 
3

Bu biraz göz önüne sermek için iyi olabilir.

userInput = readInt(); 
while (userInput < 1 || userInput > 3) { 
    System.out.println("\n\tWrong input: possible selection 1, 2 or 3"); 
    userInput = readInt(); 
} 

Bu, bayrak gereksinimini ortadan kaldırır.