JavaRush /Java блог /Random /Объяснение взаимодействия методов (для новичков)
Alex Ter
14 уровень
Великий Новгород

Объяснение взаимодействия методов (для новичков)

Статья из группы Random
Объяснение взаимодействия методов (для новичков) - 1Пару раз, я уже натыкался на моменты, когда студенты не понимают логику взаимодействия методов. В одном из вопросов к задачам, был приведен следующий код:

public class Solution {
    public static void main(String[] args) {
        System.out.println(convertCelsiusToFahrenheit(41));
    }
    public static double convertCelsiusToFahrenheit(int celsius) {
        double TC = 41;        
        double TF = 9 / 5.0 * TC + 32;
        return TF;          
    }
}
Фактически, следуя данному коду, не важно, какое значение мы передадим в метод convertCelsiusToFahrenheit, на выходе будем получать всегда одно и тоже. Как должно происходить взаимодействие? Давайте представим, что вот есть Вы. У вас есть некоторое количество денег и вы хотите купить приставку, зная цену. Но Вы так увлечены изучением Java, что времени на покупку приставки у вас нет.

public static void main(String[] args) {
Зато у вас есть друг, у которого есть время, и он любит шататься по магазинам.

public static String friendVasya(int money) {
int price = 300;
В данном случае я создал метод friendVasya с типом возвращаемого значения String, вместо этого можно было задать любой другой тип данных, все зависит от того, что вы в итоге хотите получить. При запуске метода friendVasya получит то количество денег, что Вы укажите в аргументе (int money). У друга Васи может быть куча своих дел или потребностей, все это мы бы описали в методе friendVasya, но нас интересует только купит ли он нам приставку. Так что добавим ему эту возможность.

public static String friendVasya(int money){
int cash = money - price;
String purchase;
И соответственно денег может хватить, может не хватить. Давайте реализуем разные ответы при этих ситуациях.

public static String friendVasya(int money){
int price = 300;
int cash = money - price;
String purchase;
if (cash>=0){
purchase = "Купил";}
else{
purchase = "Этого мало. Где деньги, Лебовски?";}
return String.format(purchase);}
В результате вызова метода friendVasya и передачи ему денег в виде аргумента money, мы сможем купить приставку или узнать, что денег на покупку не хватает. Осталось добавить вызов этого метода в код программы, указав, сколько денег вы готовы дать на приставку /*в данном случае будет 500 */:

public static void main(String[] args) {
System.out.println(friendVasya(500));
Код целиком:

public class Game {
public static void main(String[] args) {
System.out.println(friendVasya(500));
}
public static String friendVasya(int money){
int price = 300;
int cash = money - price;
String purchase;
if (cash>=0){
purchase = "Купил";}
else{
purchase = "Этого мало. Где деньги, Лебовски?";}
return String.format(purchase);
}
}
Фактически суть всего данного кода:
  • Запуск main и активация метода System.out.println // Захотели приставку, встретились с другом;
  • передали аргумент int money = 500 // Передали деньги другу;
  • запуск метода friendVasya и обработка аргумента int money, полученного из метода main // Вася идет в магазин и пробует купить на выданные деньги приставку;
  • возвращение String purchase в метод main, как аргумент передаваемый return в метод println // Вася сообщает, получилось ли ему это сделать или нет.
Вроде хотел проще объяснить, а по ходу наворотил еще сложнее) P.S. Первая статья. Сам пока не далеко уполз (уровень 3). Так что в ожидании критики по существу)
Комментарии (11)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
26 апреля 2020
Заголовок статьи "Объяснение взаимодействия методов для новичков". Тело статьи - простое написание метода. П.с. А что, если а в money передам "-100"? Где проверка корректности ввода?
hidden #2276547 Уровень 23
20 апреля 2020
Добрый день! Ваш код целиком. В каком классе все это происходит? Блок кода в методе main открыт, но не закрыт (нет закрывающейся фигурной скобки). public static void main(String[] args) { System.out.println(friendVasya(500)); public static String friendVasya(int money){ int price = 300; int cash = money - price; String purchase; if (cash>=0){ purchase = "Купил"; } else { purchase = "Этого мало. Где деньги, Лебовски?"; } return String.format(purchase); } } return String.format(purchase); почему так?) return purchase вроде тоже работает
Mr. Mister Уровень 18
20 апреля 2020

public static String friendVasya(int money){
int cash = money - price;
boolean purchase;
Зачем здесь булевая переменная если дальше мы туда ложим строку и делаем её строчной переменной?