получить фигуру, используя вложенные циклы for в Java - PullRequest
1 голос
/ 05 февраля 2012

Любые идеи о том, как написать Java-программу в классе с именем Window, который выводит предыдущий рисунок в качестве вывода.Я должен использовать вложенные циклы для печати повторяющихся частей рисунка.Я пробовал много раз, но безуспешно: (

Напишите Java-программу в классе с именем Window, который выводит предыдущую фигуру в качестве вывода. Используйте вложенные циклы for для печати повторяющихся частей фигуры. Как только вызаставить его работать, добавьте одну константу класса в свою программу, чтобы размер рисунка можно было изменить, просто изменив значение этой константы. Показанный пример вывода имеет постоянный размер 3, но если вы измените константу, рисунокдолжен увеличиваться и увеличиваться пропорционально.

+===+===+
|   |   |
|   |   |
|   |   |
+===+===+
|   |   |
|   |   |
|   |   |
+===+===+

Хорошо, я понял, но все же нужно избавиться от 3-х нижних строк - любая идея?

    for (int i = 1; i <= 3; i++) {
        for (int plus = 1; plus <= 2; plus++) {
            System.out.print("+");
        for (int shave = 1; shave <= 3; shave++) {
                System.out.print("=");
            }
            }
        System.out.print("+");
            System.out.println();
    for (int time = 1; time <= 3; time++) {
         for (int kav = 1; kav <= 3; kav++) {
                 System.out.print("|");
             for (int rev = 1; rev <= 3; rev++) {
                 System.out.print(" ");
             }
             }
         System.out.println();
        }
    }

}

Ответы [ 7 ]

3 голосов
/ 05 февраля 2012

Я думаю, это то, что вы ищете:

        final int BLOCK_SIZE = 2;
        for(int i=0; i<1; i++){
            System.out.print("+===+");
            for(int j=0; j<1; j++){
                System.out.println("===+");
                for(int k=0; k<BLOCK_SIZE; k++){
                    System.out.println("|   |   |\n|   |   |\n|   |   |");
                    for(int l=0; l<1; l++){
                        System.out.println("+===+===+");
                    }
                } System.out.println();
            }
        }
1 голос
/ 12 апреля 2013

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

int BLOCK_SIZE = 4;
for (int i=1; i<BLOCK_SIZE; i++){
    for(int j=1; j<BLOCK_SIZE; j++){
        System.out.print("+===");
    }
    System.out.println("+");
    for(int k=0; k<3; k++){
        for(int j=1; j<BLOCK_SIZE; j++){
            System.out.print("|   ");
        }
        System.out.println("|");
    }
}
for(int j=1; j<BLOCK_SIZE; j++){
        System.out.print("+===");
    }
System.out.println("+");

Другой подход, использующий некоторые операторы if

  • Здесь я использую тот факт, что каждая (4n + 1) строка имеет «+», заменяя «|» и '=' заменяет 'пробел'

    int BLOCK_SIZE = 5;
    int length = BLOCK_SIZE*4-4;
    char one,two;
    
    for(int i=0; i<=length; i++){
        if(i%4!=0){one='|';two=' ';}
        else{one='+';two='=';}
        for(int j=0; j<=length; j++){
            if(j%4==0) {
            System.out.print(one);
            }
            else {
            System.out.print(two);
            }
        }
        System.out.println(); 
    }
    

Конечно, это домашняя проблема, но мы можем повеселиться, взломав их, даже если они не служат реальной жизненной цели. Таково счастье, которое можно получить от кодирования! :)

1 голос
/ 05 февраля 2012

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

public class Homework
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {
            for (int line = 1; line <= 3; line ++)
            {

                NEWLINE:

                    for (int plus = 1; plus <= 3; plus++)
                    {
                        System.out.print("+");
                        if (plus == 3) 
                        {
                            for (int k = 1; k <= 3; k++)
                            {
                                if (line == 3)
                                {
                                    break NEWLINE;
                                }
                                System.out.println("");
                                System.out.print(" |         |          |");
                                if (k == 3)
                                {
                                    System.out.println();
                                    break NEWLINE;
                                }
                            }
                        }

                        for (int eq = 1; eq <= 6; eq++)
                        {
                            if (eq % 4 == 0)
                            {                           
                                break;
                            }
                            System.out.print("=");
                        }

                    }
            }
    }
}
0 голосов
/ 30 августа 2016

Это самый простой способ.

public class Window {
    public static final int size = 3;

    public static void main(String[] args) {
        for (int x=0; x<2; x++) {
            for (int y = 0; y<2; y++){
                System.out.print("+");
                for (int z=0;z<size; z++) {
                    System.out.print("=");
                }
            }
            System.out.println("+");
            for (int i = 0; i<size; i ++) {
                for (int j = 0; j<2; j++) {
                    System.out.print("|");
                    for (int k = 0; k<size; k++) {
                        System.out.print(" ");
                    }
                }
                System.out.println("|");
            }
        }
         for (int y = 0; y<2; y++){
                System.out.print("+");
                for (int z=0;z<size; z++) {
                    System.out.print("=");
                }
            }
        System.out.println("+");
    }
}
0 голосов
/ 16 февраля 2015
public class Window{
    public static final int size=3;
    public static void main(String[] args){
       for (int p = 1; p <= 2; p++) {
            for (int i = 1; i <=2; i++) {
                System.out.print("+");
                for (int j = 1; j <= size; j++) {
                    System.out.print("=");
                }
            }
                System.out.print("+");
                System.out.println();
            for (int k = 1; k <= size; k++) {
                for (int i = 1; i <= 3; i++) {
                    System.out.print("|");
                    for (int j = 1; j <= size; j++) {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
        for (int i = 1; i <= 2; i++) {
            System.out.print("+");
            for (int j = 1; j <= size; j++) {
                System.out.print("=");
            }
        }
        System.out.print("+");
    }
}
0 голосов
/ 05 февраля 2012

Может быть переработан, чтобы быть более красивым, но будет работать:

static String[][] array = { { "x", "="}, { "|", " "}};</p> <pre><code>public static void main(String[] args) { for(int y = 0; y < 9; y++) { for(int x = 0; x < 9; x++) { System.out.print(getSign(y, x)); } System.out.print("\n"); } } private static String getSign(int y, int x) { int modY = y % 4; int modX = x % 4; return array[getPos(modY)][getPos(modX)]; } private static int getPos(int mod) { return (mod & 1) | ((mod & 2) >> 1); }

0 голосов
/ 05 февраля 2012

Вот один из способов

    int rows = 3;
    int cols = 4;
    String output1 = "";
    String output2 = "";
    for(int j = 0; j < cols; j++)
    {
        output1 += "|   ";
    }
    output1 += "|";
    for(int j = 0; j < cols; j++)
    {
        output2 += "+===";
    }
    output2 += "+";
    for(int i = 0; i < rows*4; i++)
    {
        System.out.println((i % 4 != 0)?output1:output2);
    }
    System.out.println(output2);
...