Способ печати строк в альтернативных направлениях в Java без использования 2D-массивов. ArrayLists, LinkedLists - PullRequest
0 голосов
/ 10 июня 2011

для практических целей я пытаюсь найти способ печатать строки чисел поочередно для каждой строки

и т. Д.

100 99 98 97 96 95 94 93 92 91
81 82 83 84 85 86 87 88 89 90
80 79 78 77 76 75 74 73 ......

.... без использования 2D-массивов, ArrayLists, LinkedLists ..

Пока я это сделал, но мое решение этого довольно длинное и может быть повторяющимся ... мне было интересно, есть ли "более короткий" способ обойти это ...

Вот что я сделал ...

public class PrintNumbers {

    public static void main(String args[])
    {
        PrintNumbers app = new PrintNumbers();
        app.display();
    }


    public void display()// main display
    {
        display_cell_left_to_right(100,90);
        display_cell_right_to_left(81,91);
        display_cell_left_to_right(80,70);
        display_cell_right_to_left(61,71);
        display_cell_left_to_right(60,50);
        display_cell_right_to_left(41,51);
        display_cell_left_to_right(40,30);
        display_cell_right_to_left(21,31);
        display_cell_left_to_right(20,10);
        display_cell_right_to_left(1,11);
        board_displayLine();


    }//end display method

    public void board_displayLine(){
        System.out.println("");
        for (int i = 10; i > 0; i--)
            System.out.print("+-------");

        System.out.print("+");
        System.out.println("");
    }//end board_displayLine

    //method to display cells from left to right according to a range of indexes
    public void display_cell_left_to_right(int max,int min){
        board_displayLine();
        for (int i = max; i > min; i--)//
            System.out.print("|"+i+"\t");
        System.out.print("|");
    }
    //same as above but vice versa
    public void display_cell_right_to_left(int min, int max){
        board_displayLine();
        for (int i = min; i < max; i++)
            System.out.print("|"+i+"\t");
        System.out.print("|");
    }

}

Спасибо!

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Вот моя версия, предназначенная для людей:

public static void main(String[] args) {
    int ROWS = 10;
    int MAX = 100;
    int currentValue = MAX;
    for(int i = 0; i < ROWS; i++) {
        if (i % 2 == 0) {
            for (int j = 0; j < MAX / ROWS; j++) {
                System.out.print(currentValue-- + " ");
            }
        } else {
            currentValue -= MAX / ROWS;
            for (int j = MAX / ROWS; j >= 0; j--) {
                System.out.print((currentValue + ((MAX / ROWS) - j)) + " ");
            }
            currentValue--;
        }
        System.out.println();
    }
}
0 голосов
/ 10 июня 2011

Попробуйте что-то вроде этого

for(int i = 9; i>=0; i--){
    boolean right = (i%2 == 0);
    for(int j = (right?1:10); j!=0 && j!=11; j = j + (right?1:-1)){
        System.out.print(i*10 + j);
        System.out.print("\t");

    }
    System.out.println();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...