Обсуждение домашних заданий

В курсе Javaessential есть домашние задания!

Хотелось бы знать правильный ответ на них чтоб понять правильно ты выполнил или нет!

Вопрос по Javaessential Лекция-2

Что значит "который должен принимать радиус"

Мое решение в файлах

Задание

Используя Intelij IDEA создать проект, пакет.

Создать класс MyArea, в нем объявить константу PI = 3.14 и статический метод areaOfCircle, который должен принимать радиус и используя PI посчитать площадь круга.

Создать класс Main, где запустить данный метод.

https://drive.google.com/file/d/0B8Kr062mg0ZcRmcxNHdKOW8tMEE/view?usp=sharing

https://drive.google.com/file/d/0B8Kr062mg0ZcdWVoNFg2dVVaZmc/view?usp=sharing

Добрый день, Игорь.

<<Что значит "который должен принимать радиус">>, - под этим скрывается то, что метод должен принимать в качестве параметров радиус.

Т.е. при вызове метода передается радиус и в дальнейшем его используем

1) Для корректно выполненного задания, через точку входа при вызове передайте радиус, соответственно метод в классе MyArea должен принимать этот параметр;

2) В одном из скринов я увидел, что вы используете в методе:

- System.out.println(square);

- return square;

Если Вы используете метод с возвращаемым значением(square), то допишите в точке входа переменную(куда поместите возвращаемое значение метода), либо же сразу выводите на экран System.out.println(MyArea.areaOfCircle()); Соответственно, в методе System.out.println(); уже не придется использовать

Если же метод без возвращаемого значения, то можете сразу вывести на экран содержимое square.

package itvdn.lesson2;

public class Main {
public static void main(String[] args) {
MyArea c = new MyArea();
double radius = 20;

 c.<span class="me1" style="color: #006633;">areaOfCircle</span><span class="br0" style="color: #009900;">(</span>radius<span class="br0" style="color: #009900;">)</span><span class="sy0" style="color: #339933;">;</span>
 <span class="kw21" style="color: #003399; font-weight: bold;">System</span>.<span class="me1" style="color: #006633;">out</span>.<span class="me1" style="color: #006633;">println</span><span class="br0" style="color: #009900;">(</span>c.<span class="me1" style="color: #006633;">areaOfCircle</span><span class="br0" style="color: #009900;">(</span>radius<span class="br0" style="color: #009900;">)</span><span class="br0" style="color: #009900;">)</span><span class="sy0" style="color: #339933;">;</span>


<span class="br0" style="color: #009900;">}</span>

}

package itvdn.lesson2;

public class MyArea {
static final double PI = 3.14;

public static double areaOfCircle(double radius){

   <span class="kw3" style="color: #006600; font-weight: bold;">double</span> square = PI <span class="sy0" style="color: #339933;">*</span> radius<span class="sy0" style="color: #339933;">*</span>radius<span class="sy0" style="color: #339933;">;</span>

   <span class="kw2" style="font-weight: bold;">return</span> square<span class="sy0" style="color: #339933;">;</span>
<span class="br0" style="color: #009900;">}</span>

}

Доброе утро.

1) У Вас в первом случае в методе main, обращение к статическому методу было через имя класса - что есть правильным. А во втором случае Вы создаете объект класса, а потом через этот объект обращаетесь к методу - лишняя затрата памяти, даже IDEA должна подчеркнуть такое действие, чтобы обратили внимание.

Вывод: К статическим методам обращаемся через ИМЯ класса.

2) Исходя из п.1. создание объекта - можно убрать.

c.areaOfCircle(radius); // Обратите сюда внимание, вы вызываете метод -> он отрабатывает, возвращает значение в никуда, ведь вы в переменную никакую не записываете. Запустите Дебаггер, поймете в чем дело
System.out.println(c.areaOfCircle(radius)); // Тут ок, только измените обращение через имя класса, а не ссылку на объект

Вывод: Старайтесь оптимизировать код.

3) Хотелось бы напомнить про класс Math(зайдите в документацию https://docs.oracle.com/javase/8/docs/api/ и в поиске вбейте Math). Обратите внимание, какой метод делает возведение в степень, Вам необходимо его применить в следующием выражении:

double square = PI * radius*radius; // radius*radius, плохой опыт. А если бы в 50-й степени было? Пришлось бы руками 50 раз умножать радиус.

Вывод: Необходимо применить метод класса Math для возведения в степень.

package itvdn.lesson2;

public class Main {
public static void main(String[] args) {

System.out.println(MyArea.areaOfCircle(20));
}
}

package itvdn.lesson2;

public class
MyArea {
static final double PI = 3.14;

public static double areaOfCircle(double radius){

double square = PI * Math.pow(radius, 2);

return square;
}

}

package itvdn.lesson2;

public class Main {
public static void main(String[] args) {

MyArea.areaOfCircle(20);

}
}

package itvdn.lesson2;


public class MyArea {
static final double PI = 3.14;

public static void areaOfCircle(double radius){

double square = PI * Math.pow(radius, 2);
System.out.println(square);
}


}

Здравствуйте,если не сложно скажите пожалуйста я все правилно понял) Зарание спасибо!
https://drive.google.com/file/d/0BxqK3kmhTaowOXNNRURfLVZCTFU/view?usp=sharing

Добрый день. Да, все верно поняли)

По коду я бы рекомендовал сделать следующее:

1) Форматирование кода( в Идеехе ) - ctrl alt l.

2) Когда метод заканчивается, то после фигурной скобки не ставим ;

3) Если Вы видите в коде серым написанный текст, в данном случае конструктор - ClassRoom, то значит Идееха подсказывает, что данный контруктор вы не используете. Можете вызвать его из другого метода, как сделали в случае с 4 параметрами

4) Обратите внимание на гэттеры, если переменная названа pupil, то метод должен называться getPupil, а не getObjectPupil. Можете нажать альт insert и выбрать гэттеры, среда сама создаст

5) Желательно соблюдать Java Code Convention, обращайте внимание на название переменных, классов, методов и т.д.

Спасибо)

Помогите пожалуйста с дополнительной задачей в Java Essential по 3-му уроку.
Что значит строки выводились разными цветами при наследовании? Как это вообще реализовать?

Помогите с решением домашнего задания 6 урока стартового уровня Java. Задача на циклы.
Про числа A и B, где (A<B), и необходимо вывести на экран сумму всех чисел расположенных в диапазоне между A и B, а также вывести все нечётные числа в этом диапазоне.

А что именно не получается? Запустите цикл с счетчиком от А до B, а в теле цикла выполняйте суммирование значений с переменной, которая определена до цикла и также выполняйте в теле проверку остатка деления на 2 если остатка нет - выводите на экран. Что то типа
int sum = 0;
for (int i = A; i <= B; i++)
{
sum += i;
if(i % 2 == 0) {
//выводим на экран
}
}

Автору нужно вывести

все нечётные числа в этом диапазоне

а код

if(i % 2 == 0) {
//выводим на экран
}

выведет четные :slight_smile:

так что скорее уж

if(i % 2 != 0)

или

if ((i & 1) != 0)

(это вариант сравнения младшего бита, у четных он равен 0)

Очепятка :slight_smile: