UA12 Ответов: 2

Как исправить код (JAVA)?


По какой-то причине код не увеличивает 2 массива, то есть xa[] и yarray [], когда выполняются условия. Предполагается, что это будет решение проблемы code jam 2019 round 1B question manhaton the question can be found здесь. Если бы вы могли мне помочь, я был бы вам очень признателен.

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int cases = input.nextInt();

        for (int a = 1; a <= cases; a++) {
            int people = input.nextInt();
            int length = input.nextInt();

            int[] xa = new int[length];
            int[] yarray = new int[length];

            for (int b = 1; b <= people; b++) {

                int xd = input.nextInt();
                int yd = input.nextInt();
                String direction = input.next();

                if (direction =="N") {
                    for (int c = (yd + 1); c < length; c++) {
                        yarray[c]+=1;
                    }
                }
                else if (direction == "S") {
                    for (int v = (yd - 1); v >= 0; v--) {
                        yarray[v]+=1;
                    }
                }
                else if (direction == "E") {
                    for (int o = (xd + 1); o < length; o++) {
                        xa[o]+=1;
                    }
                }
                else if (direction == "W") {
                    for (int m = (xd - 1); m >= 0; m--) {
                        xa[m]+=1;
                    }
                }
            }
            int max = xa[0];
            int xcord = 0;
            for(int i = 0; i < length; i++)
            {
                if(max < xa[i])
                {
                    max = xa[i];
                    xcord=i;
                }
            }

            int maxy = yarray[0];
            int ycor=0;

            for(int i = 0; i < length; i++)
            {
                if(maxy < yarray[i]) {
                    maxy = yarray[i];
                    ycor=i;
                }
            }

            System.out.println("Case #" + a + ": " + xcord + " "+ ycor);

        }

    }
}


Входной Сигнал Образца :
3
1 10
5 5 N
4 10
2 4 N
2 6 S
1 5 E
3 5 W
8 10
0 2 S
0 3 N
0 3 N
0 4 N
0 5 S
0 5 S
0 8 S
1 5 W


Что я уже пробовал:

Я пытался изменить операторы инкремента и пытался изменить операторы цикла, но безуспешно.

2 Ответов

Рейтинг:
8

UA12

Использование .equals() вместо == делает эту работу.


Рейтинг:
1

Patrice T

Цитата:
По какой-то причине код не увеличивает 2 массива, то есть xa[] и yarray [], когда выполняются условия.

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]

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


UA12

Спасибо, но я нашел ошибку в своем коде, я должен был использовать .equals() вместо "==".

Patrice T

Приятно было помочь.
Чтобы закрыть вопрос, либо примите мое решение, либо объясните, как вы решили этот вопрос, и примите свое решение.