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, 13:54
Заголовок статьи "Объяснение взаимодействия методов для новичков". Тело статьи - простое написание метода. П.с. А что, если а в money передам "-100"? Где проверка корректности ввода?
Alex Ter
Уровень 14
26 апреля 2020, 16:58
здесь просто объясняется как взаимодействуют методы между собой. т.е. что откуда берет один метод, когда его вызывают из другого. конечно, все можно было бы усложнить, наворотить много всяких функций, проверок. но зачем? эта статья для людей, которые еще уровень 2 проходят: https://javarush.com/tasks/com.javarush.task.task01.task0130 вот ссылка на задачу, описанную в начале статьи.
27 апреля 2020, 10:33
Где здесь взаимодействие методов? Не считая psvm, в этой статье только один метод.
Alex Ter
Уровень 14
27 апреля 2020, 11:58
а вызов из psvm метода friendVasya - не взаимодействие? а передача туда аргументов и возврат значения оттуда? p.s. считаете что статья ни о чем - ваше право, просто игнорируйте её. считаете, что она не нужна - пишите администрации, пусть оценят насколько она необходима и по результату (если посчитают нужным) удалят. На данный момент воспринимаю ваши комментарии не более чем как троллинг или необоснованные наезды.
29 апреля 2020, 12:09
Да воспринимайте как хотите. Можно подумать, Вы первый или последний человек, который болезненно реагирует на конструктивную критику, отвечая на нее глупыми подколками. Рекомендую сравнить. А именно в этой статье "не считая psvm, только один метод и никакого взаимодействия". Вся эта статья умещается в
public class Main {

public static void main(String[] args) {
System.out.println(formatString("String"));
}
public static String formatString(String string){
 return "format"+ string;
}
}
Alex Ter
Уровень 14
29 апреля 2020, 15:01
Да, я читал эту статью. Я не увидел в ваших сообщениях конструктивной критики.
2 мая 2020, 15:44
Тогда специально выделю конструктив: " Можно подумать, Вы первый или последний человек, который болезненно реагирует на конструктивную критику, отвечая на нее глупыми подколками. Рекомендую сравнить." Если и теперь не видно - значит это (видеть конструктив) просто не ваше)
hidden #2276547
Уровень 23
20 апреля 2020, 19:44
Добрый день! Ваш код целиком. В каком классе все это происходит? Блок кода в методе 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 вроде тоже работает
Alex Ter
Уровень 14
20 апреля 2020, 21:30
Согласен) благодарю, за замечание) По поводу format - пробовал просто return purchase - IDEA ругалась: Error:(16, 16) java: cannot find symbol symbol: method String(java.lang.String) полез в гугл, как возвращать строковое значение, вот собственно результат в коде)
Mr. Mister Java Developer в Playtika
20 апреля 2020, 09:43
public static String friendVasya(int money){
int cash = money - price;
boolean purchase;
Зачем здесь булевая переменная если дальше мы туда ложим строку и делаем её строчной переменной?
Alex Ter
Уровень 14
20 апреля 2020, 12:09
спасибо, поправил. сперва через булевую операцию придумал, потом переделал на просто текст)