2012-04-27 8 views
0

У меня возникают проблемы с циклами. У меня есть задача распечатать алмаз с 2 входными переменными: 1) Целое число для представления количества строк/максимальное число символов в середине 2) Символьный шрифт: Код псевдонауки: 7 = int $ = char Программа должна печатать (и учитывать пробелы с левой стороны): http://pastebin.com/cspgz3bAВ то время как петли рисуют бриллианты

Мои циклы while - это беспорядок, кажется. Сейчас они печатают (* моделировать пространства): http://pastebin.com/cspgz3bA

Я обнаружил, что разделение алмаз на два треугольника (верхний & ниже), чтобы быть самым простым способом решения этого, однако мой код, кажется, полная фигня ...

EDIT :: Это только для верхней половины треугольника, поэтому (rows/2) +1 - это значит остановиться после окончания средней строки.

rows = integerInput; 
    maxSpace = integerInput; 

    while (currentRow <=((rows/2)+1)) { 
     spaceReq = ((maxSpace -1)/2); // determines spaces required 
      while (spaces < spaceReq) { 

       System.out.print("*"); 
       spaces++; 
      } 
      while (charPrinted < charReq){ 
       System.out.print(charInput); 
       charPrinted++; 

      }    
      currentRow++; 
      maxSpace--; 
      charReq = charReq +2; 
      System.out.println(""); 
     } 

Может кто-нибудь указать, почему это работает для 1-й итерации, но разбивается на следующие?

Спасибо!

+1

Вы хотели бы опубликовать более полный код? входы/выходы? В идеале, отправьте сообщение SSCCE http://sscce.org –

+0

Извините, я должен был это сделать - jpm получил ответ, который я искал без него, хотя :) – Numpty

ответ

3

charPrinted и spaces необходимо установить в 0 в верхней части внешнего контура.

+0

Huzah! Это сделало это прямо там. Я полностью забыл их сбросить. Вы джентльмен и ученые :) – Numpty

+0

Я получаю это сейчас: *** х ** ххй ** ххххе * ххххххе * XXXXXXXXX Это не идеально, но я могу настроить мою математику чуть-чуть. Еще раз спасибо – Numpty

+0

Да, фокус в том, что 'maxSpace' следует вычислять фронтом как' integerInput/2'. Нет необходимости в минусе 1, так как это целочисленное деление и будет усекать для вас. Затем просто используйте 'maxSpace' вместо того, чтобы пытаться вычислить' spaceReq'. Таким образом, первый внутренний цикл будет «while» (пробелы jpm

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