groovy.lang.MissingMethodException String vs java.lang.String - PullRequest
0 голосов
/ 15 сентября 2018

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

thisisazigzag:

t     a     g
 h   s z   a
  i i   i z
   s     g

Итак, у меня есть код (не уверен, правильно он или нетпока, но это не часть вопроса)

class Main { 

    public void zigzag(String text, int lines) {
        String zigLines = [];
        while(lines > 0){
            String line = "";
            increment = lines+(lines-2);
            lines = lines + (" " * (lines-1));
            for(int i=(lines-1); i<text.length(); i+=increment) {
                line = line + text[i] + (" " * increment);
            }
            zigLines.add(0, line);
            lines--;
        }
        for(line in zigLines){
            println(line);
        }
    }

    static void main(String[] args) {
        zigzag("thisisazigzag", 4);
    }
}

Но когда я запускаю сценарий, я получаю эту ошибку:

groovy.lang.MissingMethodException: No signature of method: static Main.zigzag() 
  is applicable for argument types: (String, Integer) values: [thisisazigzag, 4]
Possible solutions: zigzag(java.lang.String, int)

И я очень смущенразница между java.lang.String и String, а затем Integer и int?

Любая помощь или объяснение этого было бы здорово!

Спасибо.

1 Ответ

0 голосов
/ 15 сентября 2018

Вы должны сделать свой zigzag метод static.

Ваш код не работал, потому что без модификатора static zigzag был бы методом экземпляра, а это значит, что вам понадобится экземпляр вашего класса Main, чтобы иметь возможность вызывать его. Вот вводное руководство, объясняющее некоторые из этих понятий: docs.oracle.com / javase / tutorial / java / javaOO / classvars.html

...