Софтуерно Инженерство
Loading...
+ Нов въпрос
neogost avatar neogost 0 Точки

Не мога да разбера къде ми е грешката

Не мога да разбера къде ми е грешката , написано е всичко както го показва лектора нопри мене твърдо и упорито неще да си вземе метода за да го изпълни

ето го и кода:

import java.util.Scanner;

public class P07_ChristmasTree {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int n = Integer.parseInt(scanner.nextLine());
        for (int row = 0; row < n + 1; row++) {
            String spaces = repeatStrr(strToRepeat " ", count n - row);
            String stars = repeatStrr(strToRepeat "*", row);
            
            String currentRow = spaces + stars + " | " + stars;
            System.out.println(currentRow);

        }
        
    }static String repeatStrr(String strToRepeat, int count) {
        String text = "";
        for (int i = 0; i < count; i++) {
            text += strToRepeat;
        }
        return text;
    }
}

това е , забих тотално :(

Soprin avatar Soprin 105 Точки

https://pastebin.com/s24enYrd това е твоето оправено решение. Проблемът е, че като подаваш променливите на метода не трябва да ги декларираш.( смисъл само казваш n, а не count n и " " или "*", а не strToRepeat " "). Надявам се да си ме разбрал.

0
Ivelin_Dimitrov avatar Ivelin_Dimitrov 147 Точки

Здравей колега,

методът ти приема параметри strToRepeat и count

static String repeatStrr(String strToRepeat, int count) {
    }

Съответно когато викаш методът не трябва да подаваш имената на променливите (променливите във метода можеш да кръстиш както си пожелаеш, и тези имена са служебни и видими само за метода). 

String spaces = repeatStrr(strToRepeat " ", count n - row);
String stars = repeatStrr(strToRepeat "*", row);

Когато извикваш метода, той очаква да му подадеш (String, int) без да се интерисува как си ги кръстил във самият метод! Следователно ще извикваш метода така repeatStrr(" ", n - row) - " " e String, n - row е int.

Ти си ги видял във InteliJ на лекторът във светло сив цвят - Не защото той ги е написал, а защото InteliJ е умен и ти подсказва какво трябва да въведеш, подсказва ти какви променливи очаква методът който извикваш!

0
14/02/2018 12:33:26
S.Neshkov avatar S.Neshkov 55 Точки
Ето грешката
String spaces = repeatStrr(strToRepeat " ", count n - row);
            String stars = repeatStrr(strToRepeat "*", row);

 

Правилното е така:

String spaces = repeatStrr(" ", n - row);
String stars = repeatStrr("*", row);

Тези променливи са служебни и видими само за метода 

static String repeatStrr(String strToRepeat, int count) {
    
    }

 

 

0
14/02/2018 12:27:34
neogost avatar neogost 0 Точки

Балгодаря на всички колеги които ми отговорииха , Разбрах си грешката . За съжаление това объркване се получи защото лектора не предупреди че декларирането на променливите на метода неенеобходимо и че това при него са вижда зщото така му е настроена средата за програмиране. Освен това при мен така и не тръгна докато на зададох изрично типът на метода " private " , " publick " или " protected " ,само със " static"  при мен не работи средата за програмиране се дразни и ми вади предупреждения .

Смятам че въпроса е изчерпан ,още веднъж благодаря на всички.

0