Ваша основная проблема заключается в том, что вы пытаетесь вызвать методы askForRadius
, askForheight
и getVolume
без использования ссылок в классе, где они не определены.Следовательно, компилятор будет искать эти методы в классе CylinderTest
и, не найдя их, выдает и ошибку.Вам нужно указать, где расположены эти методы, прежде чем компилятор сможет скомпилировать ваш код.
Сделать это на самом деле довольно просто.Все, что нужно сделать, это импортировать класс, который содержит эти методы, и ссылаться на него при вызове вашего метода.Чтобы сослаться на класс, вы должны указать его путь и имя или, если он импортирован, просто указать его имя.
double r = Cylinder.askForRadius();
double h = Cylinder.askForheight();
double result = Cylinder.getVolume(r, h);
Я предлагаю вам сделать дополнительное чтение по Классы и объекты и взгляните на этот вопрос: Что такое классы, ссылки и объекты?
Другая проблема main здесь ваша main метод.Если вы посмотрите на Oracle Tutorial , вы увидите, что в нем написано:
В языке программирования Java каждое приложение должно содержать основной метод с сигнатурой:
public static void main(String[] args)
Модификаторы public и static могут быть записаны в любом порядке (public static
или static public
), но условием является использование public static, как показано выше.Вы можете назвать аргумент как угодно, но большинство программистов выбирают «args» или «argv».
Теперь, если вы посмотрите на свой код, вы увидите, что ваш метод main имеет *Модификатор 1033 *, но не модификатор public
.Лучше сделайте это публичным, иначе ваша программа никогда не запустится;)
Хорошо, это решает две основные проблемы, но у вас все еще есть еще две маленькие.
Прежде всего,вы закрываете System.in
в своем методе askForRadius
, поэтому вы не сможете прочитать его при вызове метода askForheight
.
Во-вторых, вы создаете новый экземпляр сканера каждый раз, когда выхочу читать с System.in
.В конечном счете, это не угроза, но это неэффективный и очень «грязный» код.
Решение этих двух следующих проблем уже определено в ответе на другом вопросе :
Вы должны создать только один сканер, который вы используете для жизни программы
, и не следует закрывать этот сканер.