В консоль ничего не выводится! (Ява, Затмение Марса)

Итак, в основном я экспериментирую с написанием программы поиска пути, которая находит путь от одной точки в сетке 10 * 10 до другой, это нормально.

У меня есть класс Path, который представляет собой ArrayList из GridSquares (которые являются просто прославленными координатами).

Я написал небольшой метод в классе Path для отображения пути, и именно здесь возникает проблема, такая незначительная, но очень раздражающая.

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

Вот код для displayPath:

public void displayPath(){
    System.out.println("This is displayPrint"); //This line is included to make sure the program calls the method correctly.
    for(int i=1; i==10; i++){
        for(int j=1; j==10; j++){
            if(this.includesSquare(i, j)){
                System.out.print("[x]");
            } else {
                System.out.print("[ ]");
            }
        }
        System.out.print("\n");
    }
}

Я включил первую строку, чтобы убедиться, что console/System.out.print() работает правильно, и она отображается каждый раз при вызове метода.

Вот код для includesSquare:

public boolean includesSquare(int x, int y){
    for(GridSquare square : this.path){
        if(square.getX()==x && square.getY()==y){
            return true;
        }
    }
    return false;
}

Я удалил и переустановил Eclipse, скопировал java-файлы в новый проект и т. д., и, похоже, ничего не изменилось. Я знаю, что консоль работает нормально, так как правильно отображает первую строку displayPath.

Любая помощь приветствуется!


person Community    schedule 01.10.2015    source источник
comment
Это: \\This line is included [...] часть вашего кода? Потому что вы комментируете с косой чертой, а не с обратной косой чертой.   -  person CubeJockey    schedule 01.10.2015
comment
нет добавил, что в рамках вопроса! моя ошибка!   -  person    schedule 01.10.2015
comment
Каковы ваши намерения с for(int i=1; i==10; i++) ? В частности, условие i == 10   -  person CubeJockey    schedule 01.10.2015
comment
в основном я хочу, чтобы цикл заканчивался, когда я или j == 10, возможно ли это с циклом for, я не знал!   -  person    schedule 01.10.2015
comment
измените условие на j<=10. В своем коде вы говорите, что выполняете цикл, только если j=10 и ничего больше   -  person singhakash    schedule 01.10.2015
comment
Вы можете, но вместо этого это условие больше используется для выражения того, когда вы хотите, чтобы цикл продолжал работать. Когда вы инициализируете i значением 1, оно не будет равно == значению 10, поэтому цикл не выполняется ни разу :). Вместо этого вы хотите i < 10, чтобы ваш цикл работал до тех пор, пока i меньше 10. И, как вы говорите, он завершится, когда i == 10.   -  person CubeJockey    schedule 01.10.2015
comment
Ого, ты удалил и заново установил? Заходите на сайт и давайте рассмотрим его, прежде чем приступать к таким экстремальным действиям, как удаление/установка. :) Мы здесь, чтобы помочь.   -  person gonzo    schedule 01.10.2015
comment
это легко исправить, его можно заменить на i‹11, но я не видел проблемы с использованием ==, так как они оба все равно разрешаются в логическое значение. Ааа @Trobbins, это имеет смысл!   -  person    schedule 01.10.2015
comment
Да! @gonzo я читал в другом месте, что людям с похожей проблемой удалось решить ее путем переустановки! :П   -  person    schedule 01.10.2015


Ответы (2)


for(int i=1; i==10; i++) и for(int j=1; j==10; j++) работать не будут.

Среднее условие (i==10) должно указывать, когда цикл должен быть выполнен. Как бы то ни было, вы говорите, что хотите, чтобы цикл выполнялся только тогда, когда i равно 10. Поскольку i изначально равно 1, он будет пропущен прямо через цикл.

То, что вы, вероятно, захотите, это

for(int i=1; i<10; i++)

Таким образом, когда i равно 1, оно удовлетворяет условию, что оно меньше 10, поэтому цикл будет выполнен, и i будет увеличиваться. Это будет продолжаться до тех пор, пока i не станет равным 10, после чего условие i<10 не выполняется, поэтому цикл завершается.

Другими словами, вы хотите, чтобы ваше условие говорило «цикл пока это верно», а не «цикл пока это верно».

person gla3dr    schedule 01.10.2015
comment
Собирался отредактировать это после. Терпение @MarounMaroun! :П - person gla3dr; 01.10.2015
comment
@gla3dr вам разрешено подождать, пока ваш ответ не будет готов, прежде чем опубликовать свой ответ. - person CubeJockey; 01.10.2015
comment
Они не будут работать, потому что если i=1, то i==10 ложно, и цикл завершится. Пожалуйста, добавьте объяснение к вашему ответу. - person Maroun; 01.10.2015
comment
@gla3dr Спасибо! по какой-то причине я думал о среднем утверждении как о своего рода утверждении «идти до этого», которое на самом деле не имеет большого смысла, но я просто никогда не думал об этом раньше! - person ; 01.10.2015
comment
@Trobbins Когда вы говорите, что мне разрешено, вы имеете в виду, что я должен? - person gla3dr; 02.10.2015

for(int i=1; i==10; i++){ вот в чем ваша проблема.

Синтаксис цикла for следующий:

для (<initial condition>; <checking condition>; <incrementing>)

Итак, что у вас есть

Начиная с i = 1, увеличивайте на 1, пока i == 10. Что ж, поскольку i начинается с 1, вы уже потерпели неудачу на первом шаге!

Превратите свой цикл for в цикл while, чтобы лучше понять это:

int i = 1;
while(i == 10) {
    doSomething();
    i++;
}

Так что, конечно, это не сработает.

person Alex K    schedule 01.10.2015