(Java)

2016-03-19 8 views
0

Eğlenmek için tahmin oyunu yapıyorum. Bazı nedenlerden ötürü, for döngüsündeki kod asla işlemez. Onu üç kısma ayırdım. Lütfen bana birisinin bana yardım edebileceğini söyleyin Kontrol ettim ve kod döngü için devam etmiyor. For döngüsünde yanlış bir şey olmadığından eminim. senin hwlp teşekkür için teşekkürler if(ans = true) { bir atama değil, bir onay durumdur(Java)

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.Random; 

public class Guess { 
    public static Random r = new Random(); 
    public static BufferedReader in = new BufferedReader(
      new InputStreamReader(System.in)); 

    public static final String YES_S = "y"; 
    public static final String NO_S = "n"; 

    public static void main(String [] args) throws IOException { 
     boolean menu = true; 
     boolean start = false; 
     boolean end = false; 
     boolean ans = true; 
     boolean rand = true; 

     int num = -1; 

     int guessNum = -1; 

     while(menu) { 
      System.out.println("Start game [ y ]:"); 
      String input = in.readLine(); 

      if(input.equals(YES_S)) { 
       menu = false; 
       start = true; 
       end = false; 
      } 
     } 

     while(start) { 
      while(ans) { 
       while(rand) { 
        num = r.nextInt(11); 
        rand = false; 
       } 

       for (int i = 0; i > 3; i++) { 
        System.out.println(" Guess a number from 0 to 10 :"); 
        String input1 = in.readLine(); 
        guessNum = Integer.parseInt(input1); 
        if (guessNum == num) { 
         System.out.println(" Congratulations !"); 
         ans = false; 
         rand = true; 
        } else { 
         System.out.println(" Try again"); 

        } 


       } 
       if(ans = true) { 
        end = true; 
       } 
      } 

     } 
    } 
} 
+0

Yan not: Bir yöntemde daha az şey yapmalısınız. Döngüdeki bir döngüdeki bir döngüde bir döngü ... bu kod, editörünüzü kapattığınız ikincisini sürdüremez hale getirir. Eğlenmek için programlama yapıyorsanız; Robert Martin'in "Temiz kod" yazmasını tavsiye ederim; Program, birkaç gün boyunca ona dokunmadığı halde kodunu hala anladığında daha da eğlenceli hale gelir. – GhostCat

cevap

0

kontrol ediniz

Eğer ans değerini kontrol etmek istiyorsanız yapmanız

if(ans == true) { 

VEYA DAHA

if(ans) { 

Diğer bir neden çalışmıyor

bu çünkü:

for (int i = 0; i > 3; i++) { 

hiç karşılaşmamış olan durum yerine

for (int i = 0; i < 3; i++) { 
+0

Üzgünüm ama ne demek istediğini anlamadım? Ben bir noob:/ – ugh

+1

Tek sorun bu değil –

+1

Bunu yazıyorsanız: ** ans == true ** "ans değeri true ise" soruyorsunuz, ama yaptığınız zaman ** ans = true ** var ans'i true olarak ayarlıyorsunuz .... –

6

Peki yapın senin for döngü ayrıştırmak edelim:

for (int i = 0; i > 3; i++) 
  1. i = 0 ile başla
  2. i > 3 numaralı bağlantıyı gerçekleştirirken, gövdeyi uygulayın ... whops, sorunu görüyor musunuz?
+0

Teşekkürler. vay ben o notch not thatnt notch – ugh

+1

Sadece senin için neden bu kadar hata ile yardımcı olur çünkü tam olarak senin kodun kalitesine odaklanmasını tavsiye ediyorum merak ediyordum. – GhostCat

0

Karşılaştırma operatörü çevirin:

for (int i = 0; i < 3; i++) {
+0

Teşekkürler. vay ben o lol fark etmedi – ugh

1
for (int i = 0; i > 3; i++) { 

bekçi koşul doğru asla - 0 > 3 hemen yanlıştır, bu nedenle döngü asla kaçmaz.

Yerine koruma olarak i < 3 kullanın.

1

I> 3'ünüz var ve i = 0 ... 0 3'ten büyük değil. Yani, bu yanlış! Bunu değiştir:

   for (int i = 0; i < 3; i++) { 
        System.out.println(" Guess a number from 0 to 10 :"); 
        String input1 = in.readLine(); 
        guessNum = Integer.parseInt(input1); 
        if (guessNum == num) { 
         System.out.println(" Congratulations !"); 
         ans = false; 
         rand = true; 
        } else { 
         System.out.println(" Try again"); 

        } 


       }