Skip to main content

Методы

Главная задача программирование - автоматизация. Если какое-то повторяющееся действие можно автоматизировать, его выполнение стоит переложить на компьютер.

Например, в 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;
}
  1. Описать метод power4(A), вычисляющий четвёртую степень вещественного числа A
  2. Описать метод mean(X, Y), вычисляющий среднее арифметическое двух вещественных чисел X и Y
  3. Описать метод even(K) логического типа, возвращающий true, если целый параметр K является четным, и false в противном случае
  4. Описать метод getP(x1, y1, x2, y2), вычисляющий периметр прямоугольника, стороны которого параллельны осям координат, если его вершины AA и CC заданы вещественными координатами (x1, y1)(x_1,~y_1) и (x2, y2)(x_2,~y_2).
  5. Описать метод addRightDigit(D, K), добавляющий к целому положительному числу K справа цифру D
  6. Описать метод isPower5(K) логического типа, возвращающий true, если вещественный параметр K (> 0) является целой степенью числа 55, и false в противном случае.
  7. Описать метод invDigits(K), меняющий порядок следования цифр целого положительного пятизначного числа K на обратный

Ссылка на контест