Методы
Главная задача программирование - автоматизация. Если какое-то повторяющееся действие можно автоматизировать, его выполнение стоит переложить на компьютер.
Например, в java
нет команды возведения целых чисел в третью степень.
Есть два пути. Первый - это воспользоваться функцией Math.pow()
, но её результат - всегда
вещественное число, поэтому необходимо выполнить
явное преобразование к int
. Второй - просто дважды умножить число на само себя:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = (int) Math.pow(a, 3);
int c = a * a * a;
}
Оба подхода вполне приемлемы, если возвести в степень нужно один раз. Если такое действие
в нашей программе нужно выполнить множество раз, то мы сильно сэкономим время, если возведение
в третью степень вынесем в отдельный блок кода, который назовём power3()
.
У этого блока нам нужно определить входы и выходы. Выходом будет целое число, входом - тоже.
Такие блоки кода называются методами. Все методы необходимо объявлять в теле класса.
Общий вид любого метода:
тип_возвращаемого_значения имя_метода(тип1 параметр1, тип2 параметр2){
тело_метода
}
В общем случае параметров (входов) может быть сколько угодно. А вот возвращаемое
значение всегда только одно. Если метод не должен ничего возвращать, тогда
типом его возвращаемого значения будет void
Напишем теперь простую программу возведения в третью степень числа, введённого с клавиатуры.
import java.util.Scanner;
public class Task1 {
static double power3(double a) {
return a * a * a;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double a = scanner.nextDouble();
System.out.printf("%.3f", power3(a));
}
}
Если метод возвращает какое-то значение(не void
), в нём обязательно должна вызываться команда return
.
Именно с помощью этой команды мы сообщаем java
, какой именно выход должен быть у метода.
Если компилятор встречает метод return
в любом месте кода, он обрывает его выполнение и возвращает
то значение, которое указано в этой команде.
void
методы тоже можно обрывать вызывая return
просто без параметров.
Примеры методов:
// сумма чисел
int max(int a, int b){
if(a>b) return a;
else return b;
}
// модуль числа
int abs(int a){
if (a<0) return -a;
else return a;
}
Метод без возвращаемого значения:
// выводит значение а в скобках, если а не равно 0
void writeA(int a){
if (a==0) return;
System.out.println("<"+a+">");
}
Важный момент! Т.к. main
– это статический метод, то и создаваемые нами методы должны иметь
модификатор static
. Т.к. статические методы могут обращаться
только со статическим элементам класса. Подробнее о статических методах будет рассказано в
соответствующем разделе.
Пример программы, использующей метод, которая находит максимальное из двух введённых чисел:
import java.util.Scanner;
public class Main {
static int max(int a, int b) {
if (a > b) return a;
else return b;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = max(sc.nextInt(), sc.nextInt());
System.out.println(m);
}
}
В этом коде не создаются временные переменные для сохранения чисел, введённых с клавиатуры.
Они сразу же передаются в качестве аргументов методу max()
.
Задание
В систему тестирования вам нужно отправить ТОЛЬКО ТРЕБУЕМЫЙ МЕТОД.
Система будет сама запускать ваши методы, читать входные данные и формировать выходные.
Если, например, от вас требуется написать метод логического типа isPositive()
,
который будет определять, является ли вещественное число положительным,
тогда весь код вашей программы на локальном компьютере будет примерно таким:
import java.util.Scanner;
public class Main {
static boolean isPositive(double a) {
return a>0;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double d = sc.nextDouble();
System.out.println(isPositive(d));
}
}
При этом в систему тестирования вам необходимо отправить только требуемый метод. В случае рассматриваемой задачи вам нужно было бы отправить в систему только следующие строки:
static boolean isPositive(double a) {
return a>0;
}
- Описать метод
power4(A)
, вычисляющий четвёртую степень вещественного числаA
- Описать метод
mean(X, Y)
, вычисляющий среднее арифметическое двух вещественных чиселX
иY
- Описать метод
even(K)
логического типа, возвращающийtrue
, если целый параметрK
является четным, иfalse
в противном случае - Описать метод
getP(x1, y1, x2, y2)
, вычисляющий периметр прямоугольника, стороны которого параллельны осям координат, если его вершины и заданы вещественными координатами и . - Описать метод
addRightDigit(D, K)
, добавляющий к целому положительному числуK
справа цифруD
- Описать метод
isPower5(K)
логического типа, возвращающийtrue
, если вещественный параметрK (> 0)
является целой степенью числа , иfalse
в противном случае. - Описать метод
invDigits(K)
, меняющий порядок следования цифр целого положительного пятизначного числаK
на обратный