2014-01-11 4 views
2

Я все еще работаю над проблемой Java Diamond.Цикл не вводится

Вот текущее состояние алмаза

http://prntscr.com/2i9l9y

Я имею в виду проблему является for петля прямо здесь, все, что мне нужно, чтобы эти пространства должны быть напечатаны, а затем я законченный.

Может ли кто-нибудь увидеть очевидные причины, по которым цикл for, помеченный как ошибка, не вводится и не запускается?

//Bottom half of the diamond 

    int middleSpaces = sides + 2; 
    int downPreSpaces = 1; 
    int dRows = sides + 1; 

    for (int x = 1; x <= dRows; x++) { 
     if (x >= dRows) { 
      for (int z = 1; z <= sides + 1; z++) { 
       System.out.print(" "); 
      } 
      System.out.print("v"); 
     } 

     if (x != dRows) { 

      for(int y = 1; y <= x; y++) { 
       System.out.print(" "); 
      } 

      System.out.print("\\"); 

     //PROBLEM IS HERE 

      for (int e = middleSpaces - 2; e <= 0; e += 2) { 
       System.out.print(" "); 
      } 

      System.out.print("/\n"); 
     } 
+0

Сообщения начальных значений для Дих, middlespace.etc –

+0

@boxed__l там вы идете, и я просто баловаться с точкой остановки для цикла, так что я знаю, что это неправильно, что там прямо сейчас, но если бы вы могли указать мне на правильную переменную, чтобы подключиться, это было бы здорово – 23k

ответ

1

Вы не декремент middleSpaces также не было инициализировано:

 int middleSpaces = sides * 2; //NOTICE 
     int downPreSpaces = 1; 
     int dRows = sides + 1;  
     for (int x = 1; x <= dRows; x++) { 
      if (x >= dRows) { 
       for (int z = 1; z <= sides + 1; z++) { 
        System.out.print(" "); 
       } 
       System.out.print("v"); 
      }  
      if (x != dRows) {  
       for(int y = 1; y <= x; y++) { 
        System.out.print(" "); 
       }  
       System.out.print("\\");  
       for (int e = middleSpaces - 2; e >= 0; e -= 1) { 
        System.out.print(" "); 
       } 
       middleSpaces-=2; //NOTICE 
       System.out.print("/\n"); 
      } 
+0

Большое вам спасибо! Я очень ценю помощь, теперь кажется простым, что я знаю, в чем проблема: Спасибо за ваше время! – 23k

0

middleSpaces - 2 может быть меньше, чем Дроу, или же один из внешних контуров не работает.

+0

Я бы опубликовал весь нижний полукод, я до сих пор не вижу в чем проблема ... – 23k

3

Пройдите свой код с помощью отладчика и проверьте состояние переменных e и dRows в месте, которое вызывает проблемы.

+0

Хорошо, спросите это так: что бы вы сделали, чтобы попытаться вычислить пространства, необходимые для этой конкретной проблемы? – 23k

0

Обратите внимание, что значения dRows, middleSpaces и dmSpaces не изменяются в коде, который вы указали. Это означает, что внутренний цикл, о котором идет речь, всегда будет печатать одинаковое количество пробелов.

Вы, наверное, имели в виду что-то вроде следующего:

for(int e = middleSpaces - 2; e >= x; e -= 2) { 
    System.out.print(" "); 
} 

Это может быть от одного или что-то, но ближе к результату, который вы пытаетесь получить.

+0

Это позволило ввести некоторые пробелы, однако они все еще отключены. Для 5-ти размерной формы Id должен печатать 9 пробелов, а затем уменьшать на 2 каждый раз после. Я думал, что этот цикл сделает это, но я думаю, что я не пишу его правильно. – 23k

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