2013-11-10 4 views
0

Это немного странно, я думаю. Моя петля не петляет, и я понятия не имею, почему. Нет сообщения об ошибке. Программа просто проходит один раз. Это игра, которую я создаю, которая заставляет вас бросать 1-9 кубиков, и вы получаете возможность удалить это число из списка чисел 1-9 или удалить сам номер. Это ПРЕДОСТЕРЕЖЕНИЕ произойдет до тех пор, пока на плате не останется номеров. Но ... петля не петляет !!!Моя петля не петляет

public class gudmundur_skilaverkefni9 { 
    public static void main (String[] args) { 
     System.out.println("Godan dag. Thu ert ad spila Larus."); 
     System.out.println("1 2 3 4 5 6 7 8 9"); 
     int N = 9; 
     boolean[] Spilafylki = new boolean[10]; 

     for (int i = 1; i <= N; i++) { 
      System.out.println("Sladu inn slembitolu til ad kasta teningunum."); 

      int teningakast = StdIn.readInt(); 
      int teningatala = (int) (Math.random() * 10); 

      System.out.println("Thu fekkst " + teningatala + "."); 

      if (teningatala != 2) { 
       System.out.println("Viltu taka ut " + teningatala 
         + " eda velja tvaer tolur sem mynda summu af " 
         + teningatala + "? (1/2)"); 

      int tala2 = StdIn.readInt(); 

      if (tala2 == 2) { 
       System.out.println("Slaid inn fyrri tolu:"); 
       int fyrritala = StdIn.readInt(); 

       System.out.println("Slaid inn seinni tolu:"); 
       int seinnitala = StdIn.readInt(); 

       while (fyrritala+seinnitala != teningatala 
              || fyrritala == seinnitala){ 
        System.out.println("Thetta gengur ekki! Valdirdu nokkud somu toluna tvisvar? Reyndu aftur:"); 

        System.out.println("Slaid inn fyrri tolu:"); 
        fyrritala = StdIn.readInt(); 

        System.out.println("Slaid inn seinni tolu:"); 
        seinnitala = StdIn.readInt(); 
       } 

       System.out.println("Nu litur spilid svona ut:"); 

       Spilafylki[fyrritala] = true; 
       Spilafylki[seinnitala] = true; 

       for (i = 1; i <= N; i++) { 
        if (Spilafylki[i] == false) 
         System.out.print(i + " "); 
        else 
         System.out.print(" "); 
       } 

       System.out.println(); 
      } 

      if (tala2 == 1) { 
       Spilafylki[teningatala] = true; 

       System.out.println("Nu litur spilid svona ut:"); 

       for (i = 1; i <= N; i++) { 

        if (Spilafylki[i] == false) 
         System.out.print(i + " "); 
        else 
         System.out.print(" "); 
       } 

       System.out.println(); 
      } 
     } 
     else { 
      System.out.println("Thu fekkst tvo. Ekki er hægt ad velja tvaer olikar natturulegar tolur sem mynda 2."); 

      System.out.println("Nu litur spilid svona ut:"); 

      Spilafylki[teningatala] = true; 

      for (i = 1; i <= N; i++) { 
       if (Spilafylki[i] == false) 
        System.out.print(i + " "); 
       else 
        System.out.print(" "); 
      } 
      System.out.println(); 

      int count = 0; 

      for (i = 1; i <= N; i++) 
       if (Spilafylki[i] == true) 
        count++; 

      if (count == 9) { 
       System.out.println("Allar tolurnar eru farnar. Takk fyrir ad spila Larus."); 
        break; 

      }  
     } 
    } 
} 
+10

У вас есть вложенные петли. Не используйте одну и ту же переменную 'i' для вложенных циклов. Откройте ваш отладчик, и вы получите ответ быстрее. –

+0

Для любого случайного числа нет цикла (кроме проверки правильности ввода). Какой цикл вы ожидаете в цикле больше? –

+1

BTW Я бы использовал BitSet, это будет намного проще в использовании. например вы можете просто распечатать его. –

ответ

1

Это просто: в вложенных циклах вы не повторное объявление переменной я, отсюда же из используются внешний контур. Таким образом, как только одна из вложенных петель закончится, i будет равен N, создав правильное условие, чтобы сделать первый цикл завершенным сразу после первого цикла.

Итак, либо вы затенять внешнее я путем объявления о я переменных в вложенных циклах

for (int i = 1; ... 

Ввода Int перед я затемняете один в текущей лексической области , Или, для большей читаемости, используйте разные имена переменных для каждого цикла.

Смежные вопросы