Проблема с задачей печати внутреннего треугольника со звездами - PullRequest
1 голос
/ 12 июля 2020
public class TulosteluaLikeABoss {

    public static void tulostaTahtia(int maara) {
        // part 1
        int i = 0;
        while (maara >i) {

            System.out.print("*");
            i++;
        }
        System.out.println("");

    }

    public static void tulostaTyhjaa(int maara) {
        // part 1.1
        int i = 0;
        while (maara > i) {
            System.out.print(" ");
            i++;
        }
    }
    //something is wrong below
    public static void tulostaKolmio(int koko) {
        // part 2
        
        int j = koko;
        int k = 0;
        while (koko >= k) {

            tulostaTahtia(k);
            
            tulostaTyhjaa(j);
            k++;
            j = j-1;
        }
    }
    // from here below is irrelevant
    public static void jouluKuusi(int korkeus) {
        // part 3
    }

    public static void main(String[] args) {
        // Testit eivät katso main-metodia, voit muutella tätä vapaasti.

        tulostaKolmio(5);
        System.out.println("---");
        jouluKuusi(4);
        System.out.println("---");
        jouluKuusi(10);
    }
}

Я пытаюсь пройти базовый курс Java, и задача состоит в том, чтобы напечатать внутренний треугольник, используя звезды *

Я получил свою программу, чтобы распечатать это, но когда я пытаюсь отправить , Я получаю сообщение об ошибке: При попытке вызвать метод tulostaKolmio (1) было напечатано неправильное количество строк. ожидалось <1>, но было <2>. Меня это очень раздражает, так как я запустил код с помощью tulostaKolmio (1), и программа напечатала только одну строку с одной звездочкой, как и предполагалось. Если код выглядит странно, это потому, что это задача из трех частей, а я выполняю только вторую часть.

1 Ответ

0 голосов
/ 12 июля 2020

tulostaKolmio (1) присваивает koko значение 1. Параметр while l oop в методе будет выполняться (koko + 1) раз. Во время первого запуска в l oop tulostaTahita (0) вызывается (так как k = 0 прямо сейчас), хотя он не будет печатать никаких запусков при этом вызове, он будет печатать новую строку, потому что у вас это есть за пределами while l oop в методе tulostaTahita.

Во время второго прогона в l oop, k = 1 и, таким образом, вызывается tulostaTahita (1). Это напечатает еще одну строку, поэтому в конце у вас останутся две строки (где первая пуста).

Чтобы решить эту проблему, вы хотите добавить оператор if, чтобы убедиться, что tulostaTahita печатает новую строку только тогда, когда маара больше 0.

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