для l oop для двумерного массива String - PullRequest
0 голосов
/ 28 марта 2020

Я хочу получить следующий результат:

enter image description here

, и я писал для этой цели следующий код:

String[][] teamView = new String[24][35];
    int [] numbers = new int[]{};
    int k =1;
    for(int i=0; i< 24; i++)
    {

        for(int j = 0 ; j< 35; j++)
        {
            if (j == 0 && i==0){teamView[i][j] = "@";}
            else if(j==0){ teamView[i][j] += (char)(i + 64) ;}
            else if (j==1){teamView[i][j] = " " ;}
            else if (i ==0 ){
                switch (j){
                    case 3:
                        teamView[i][j] = "1" ;
                        break;
                    case 6:
                        teamView[i][j] = "2" ;
                        break;
                    case 9:
                        teamView[i][j] = "3" ;
                        break;
                    case 12:
                        teamView[i][j] = "4" ;
                        break;
                    case 15:
                        teamView[i][j] = "5" ;
                        break;
                    case 18:
                        teamView[i][j] = "6" ;
                        break;
                    case 21:
                        teamView[i][j] = "7" ;
                        break;
                    case 24:
                        teamView[i][j] = "8" ;
                        break;
                    case 27:
                        teamView[i][j] = "9" ;
                        break;
                    case 30:
                        teamView[i][j] = "10" ;
                        break;

                }

            }else if (i ==0){teamView[i][j] = " ";}else


            teamView[i][j] = "#";
            System.out.print(teamView[i][j]);
        }
        System.out.print("\n");

    }

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

речь идет об игре на линкоре в EDX (https://courses.edx.org/courses/course-v1: PurdueX + CS180.4x + 1T2020a / courseware / 7e1459f3e5be4579b645cf16c4196954 / a030e2346c37427_1b168660606886060688606068688608686 % 3APurdueX% 2BCS180.4x% 2B1T2020a% 2Btype% 40lti_consumer% 2Bblock% 408338de93e7c3499688734a1469b4eca9 ), если у кого-то есть идея, пожалуйста, помогите мне, спасибо.

Ответы [ 2 ]

0 голосов
/ 28 марта 2020

Вам не нужен массив или столь сложные логики c для него. Вы можете сделать это просто с двумя циклами:

public class Main {
    public static void main(String[] args) {
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if (i == 0 && j == 0) {
                    System.out.print((char) (j + 64) + " ");
                } else if (i == 0) {
                    System.out.print(j + " ");
                } else if (j == 0) {
                    System.out.print((char) (i + 64) + " ");
                } else {
                    System.out.print("# ");
                }
            }
            System.out.println();
        }
    }
}

Выход:

@ 1 2 3 4 5 6 7 8 9 10 
A # # # # # # # # # # 
B # # # # # # # # # # 
C # # # # # # # # # # 
D # # # # # # # # # # 
E # # # # # # # # # # 
F # # # # # # # # # # 
G # # # # # # # # # # 
H # # # # # # # # # # 
I # # # # # # # # # # 
J # # # # # # # # # # 

Logi c прямо вперед. Не стесняйтесь комментировать в случае каких-либо сомнений / проблем.

0 голосов
/ 28 марта 2020

Нули в первой строке происходят, потому что у вас есть 2 повторяющихся условных оператора if (i == 0), а другие нули в каждой строке происходят, потому что вы объединяете символ со строкой, используя +=, что дает nullA et c вместо этого сделайте следующее:

String[][] teamView = new String[24][35];
        for (int i = 0; i < teamView.length; i++)
        {
            for (int j = 0; j < teamView[i].length; j++)
            {
                if (j == 0 && i == 0)
                {
                    teamView[i][j] = "@";
                } else if (j == 0)
                {
                    teamView[i][j] = String.valueOf((char) (i + 64)) ;  // the nulls on each line fix
                } else if (j == 1)
                {
                    teamView[i][j] = " ";
                } else if (i == 0 && j % 3 == 0)   //instead of the only i == 0 check its a multiple of 3
                {
                    teamView[i][j] = String.valueOf(j / 3);  //instead of the switch you can just divide the j by 3 if it's is a multiple of 3
                } else if (i == 0)
                {
                    teamView[i][j] = " ";
                } else
                    teamView[i][j] = "#";
                System.out.print(teamView[i][j]);
            }
            System.out.print("\n");
        }
    }

Вывод

@  1  2  3  4  5  6  7  8  9  10  11 
A #################################
B #################################
C #################################
D #################################
E #################################
F #################################
G #################################
H #################################
I #################################
J #################################
K #################################
L #################################
M #################################
N #################################
O #################################
P #################################
Q #################################
R #################################
S #################################
T #################################
U #################################
V #################################
W #################################
...