2014-09-06 8 views
-1

Моего кода не имеет синтаксических ошибок, но когда я начинаю программу я не получаю сообщение в консоли, как я должен получитьмне нужна помощь (Logic)

class verschlüsselung { 

    private static void search(int b, int a) { 

     b = 1; 
     Random r = new Random(); 
     a = r.nextInt(9); 
     System.out.println(a); 

     while (a != b) { 
      for (b = 0; b == 9; b++) { 
       if (b == a) { 
        System.out.println("found the number " + b); 
       } 
      } 
     } 
    } 

    public static void main(String args[]) { 
     search(0, 0); 
    } 
} 

Я благодарен за каждое объяснение.

+2

Использование умляуты в именах классов не рекомендуется. – MrTux

+0

«Я не получаю сообщение в консоли, как я должен был получить« Что должен делать ваш код? Какой результат вы ожидаете? – Pshemo

+0

Ваша петля выполняется только тогда, когда 'a! = B' и внутри вас проверяет' if (b == a) ', которая всегда ложна – karthikr

ответ

0

Условие в вашей петле должно быть b < 9, иначе вы никогда не входите в его тело. Тем не менее, лучший способ сделать то, что вы хотите:

b = 0; 
while (a != b) b++; 
System.out.println("found the number " + b); 
0

две проблемы:

  1. , как и другие ребята, упомянутые: вы должны переключиться b == 9 с b < 9 (так что тело для цикла будет выполняться в то время как b меньше 9)
  2. после печати «нашел номер» вы должны добавить заявление return; - иначе вы можете попасть в бесконечный цикл.

while (a != b) { 
    for (b = 0; b < 9; b++) { // b < 9 
     if (b == a) { 
      System.out.println("found the number " + b); 
      return; // second change 
     } 
    } 
} 

еще несколько комментариев:

  • Там нет никакого смысла проходить a и b в качестве аргументов search(), так как первое, что вы делаете это снова назначьте их.
  • b используется только в не для-петли, нет необходимости, чтобы объявить его в более широком объеме
  • Цикл while ненужно

Следующий код будет делать то же самое:

public static void main(String[] args) { 
    search(); 
} 

private static void search() {  
    Random r = new Random(); 
    int a = r.nextInt(9); 

    for (int b = 0; b < 9; b++) { 
     if (b == a) { 
      System.out.println("found the number " + b); 
      return; 
     } 
    }  
} 

Стоит упомянуть, что теперь, когда у нас нет цикла обматывания while, даже если мы удалим оператор возврата, код все равно будет работать!

0

Во-первых, вы можете сделать так с for петли,

for(b=0;b == 9; b++) 

b==9 является условие цикла должен встретиться. Очевидно, это условие никогда не встретится, потому что на первом шаге b = 0.

так,

for (b = 0; b < 9; b++) 

является ОКЕЙ.

И как только найден a==b, вам необходимо разбить петлю while.

while (a != b) { 
     for (b = 0; b < 9; b++) { 
      if (b == a) { 
       System.out.println("found the number " + b); 
       break; 
      } 
     } 
    } 

На самом деле, цикл while бесполезно, протекающая достаточно,

for(b = 0; b < 9; b++) 
     { 
      if (b == a) { 
       System.out.println("found the number " + b); 
       break; 
      } 
     } 
+0

, спасибо вам большое, что действительно помогает – Amir009

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