2015-06-15 3 views
0

Я запрограммировал две части этого задания отдельно и работал по назначению. Когда я объединил части, программа выполнит только первый вызов метода (drawBox) и проигнорирует второй (drawPattern). Что я сделал не так?Почему мой второй метод не запускается?

import java.util.*; 

public class Patterns { 

    public static final Scanner CONSOLE = new Scanner(System.in); 

    public static void main (String[] args) { 
    System.out.println("Project 1 written by CHRISTOPHER TERRANOVA"); 
    System.out.println(); 
    drawBox(); 
    drawPattern(); 

    } 

    public static void drawBox() { 

    //Scanner input to determine number of boxes 
    System.out.print("Enter the number of boxes desired:\n"); 
    int numBoxes = CONSOLE.nextInt(); 

    // for loop for the top half of the boxes 
    System.out.print ("+"); 
    for (int i = 1; i<=numBoxes; i++){ 
     System.out.print("------+"); 
    } 
    System.out.println();  

    // for loop for the 1st half of the middle of the boxes 
    System.out.print ("|"); 
    for (int i = 1; i<=numBoxes; i++){ 
     System.out.print("  |"); 
    } 
    System.out.println();  

    // repeated for loop for the 2nd half of the middle of the boxes 
    System.out.print ("|"); 
    for (int i = 1; i<=numBoxes; i++){ 
     System.out.print("  |"); 
    } 
    System.out.println(); 

    // for loop for the bottom of the boxes 
    System.out.print ("+"); 
    for (int i = 1; i<=numBoxes; i++){ 
     System.out.print("------+"); 
    } 
    System.out.println(); 
    } 

    public static void drawPattern() { 

    //Scanner inputs to determine width and height of pattern 
    System.out.print("Enter width of the pattern:\n"); 
    int width = CONSOLE.nextInt(); 
    System.out.print("Enter height of the pattern:\n"); 
    int height = CONSOLE.nextInt(); 

    for(int i=1; i<=width; i++) { 
     System.out.print(" __ "); 
    } 
    System.out.println(); 

    for(int j=1; j<=height; j++) { 
     for(int i=1; i<=width; i++) { 
      System.out.print("/ \\__"); 
     } 
     System.out.println(); 

    for(int i=1; i<=width; i++) { 
     System.out.print("\\__/ "); 
    } 
    System.out.println(); 
    } 

    } 
} 
+0

Ваш код отлично подходит для меня, что вы видите на консоли? – 54l3d

+0

Я просто попробовал, и это просто сработало для меня тоже (openjdk on linux). Это может иметь какое-то отношение к буферизации строк, поскольку вы используете '\ n' вместо' println() '. –

+0

Ваш код отлично подходит для меня. Что это делает неправильно? –

ответ

0

Это прекрасно работает. Вам просто нужно ввести значение 3 int. Я провел его с тремя 10, и результат был следующим:

Enter the number of boxes desired:10 
+------+------+------+------+------+------+------+------+------+------+ 
|  |  |  |  |  |  |  |  |  |  | 
|  |  |  |  |  |  |  |  |  |  | 
+------+------+------+------+------+------+------+------+------+------+ 
Enter width of the pattern:10 
Enter height of the pattern:10 
__ __ __ __ __ __ __ __ __ __ 
/\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__ 
\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ 
/\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__ 
\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ 
/\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__ 
\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ 
/\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__ 
\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ 
/\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__ 
\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ 
/\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__ 
\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ 
/\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__ 
\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ 
/\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__ 
\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ 
/\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__ 
\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ 
/\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__ 
\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ 

Разве это не должно работать так?

+0

Точно так же. Mine выполнит только первый метод (коробки) после печати ящиков, которые он останавливает, и не начнет часть шаблона. – pocjt9324

+0

Это потому, что вы остановитесь, чтобы ввести 2 других int. Вы должны ввести int, когда увидите сообщение ниже: 'Введите ширину шаблона:' и нажмите enter, в котором появится второе сообщение для второго int, как показано ниже: 'Введите высоту рисунка:' , когда вы входите его и нажмите Enter, остальная часть кода будет выполнена. –

0

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

Connected to the target VM, address: '127.0.0.1:41443', transport: 'socket' 
Project 1 written by CHRISTOPHER TERRANOVA 

Enter the number of boxes desired: 
3 
+------+------+------+ 
|  |  |  | 
|  |  |  | 
+------+------+------+ 
Enter width of the pattern: 
3 
Enter height of the pattern: 
3 
Disconnected from the target VM, address: '127.0.0.1:41443', transport: 'socket' 
__ __ __ 
/\__/ \__/ \__ 
\__/ \__/ \__/ 
/\__/ \__/ \__ 
\__/ \__/ \__/ 
/\__/ \__/ \__ 
\__/ \__/ \__/ 

Process finished with exit code 0 
+0

Шахта выполняет части коробки, а затем останавливается. Он не дает входов для части шаблона. – pocjt9324

+0

Вы используете IDE? Вы можете попробовать запустить его в отладчике. – Snowman

+0

Я ничего не знаю о Dr. Java, но вот несколько вещей, чтобы попытаться сузить проблему. 1) Удалите (или переименуйте) существующий скомпилированный файл Patterns.class. 2) перекомпилируйте и посмотрите, появится ли новый файл там, где вы ожидали его до 3a), если он запустит его, и сделанные вами изменения теперь должны появиться на экране 3b) else узнать, где он выводится или почему он не скомпилирован. – Snowman

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