Метод который принимает метод java

Как вызвать значение метода в другом методе

Странный вопрос, понимаю. Постараюсь объяснить. Но дойдя до 8 лекции 3 уровня мне захотелось написать программу, которая хоть отдаленно будет похожа на реальную программу)) Ну так сказать приблизил себя к реальности. У меня есть сотрудник. Он получает з/п почасово Он из Украины и мне постоянно нужно много времени считать сколько ему перевести Решил написать программу, которая будет считать сколько в рублях и гривнах ему перевести за ? количество часов Мы прошли ввод с клавиатуры, поэтому я подумал будет классно написать Но столкнулся с проблемой! 1. Написал метод. Суть его в том, чтобы ввести с клавиатуры количество часов и вернуть сумму в рублях.

public static int raschetZpVadima() throws Exception  int vadimStavka = 250; System.out.println("Введите количество отработанных часов"); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String sHour = reader.readLine(); int hour = Integer.parseInt(sHour); int zpVadima = hour * vadimStavka; return zpVadima; >

2. Далее я начал втыкаться. Я получил сумму в рублях и теперь могу ее перевести в гривны Но в методе есть только один return после него он заканчивает свой расчет. Значит нужно писать другой метод, что наверное логично я написал второй метод, который берет значение из первого метода и делит на курс

public static double convertUa() throws Exception  return zpVadima.raschetZpVadima() / 2.67; >
public static void main(String[] args) throws Exception  System.out.println("К выплате Вадиму: " + raschetZpVadima() + " рублей"); System.out.println("или " + convertUa() + " гривен."); >

Получается программа начинает работу введите число часов ввожу например 9 жму enter все считается отлично по первому методу и выводит в консоль ответ К выплате Вадиму: 2250 рублей Введите количество отработанных часов Понимаете, т.е. для расчета второго метода мне снова нужно внести число часов, а я хотел получить сразу 2 ответа на каждой строке т.е. чтобы главный метод вызвал сначала метод 1, а потом метод 2 исходя из одной переменной введенной с клавиатуры. Вот весь мой вопрос! Простите за сумбурность и тупость, но я перепробовал все. в любом случае происходит повторный запуск метода 1 и в нем он просит указать значение количества часов. . Пожалуйста, подскажите бедалаге, что нужно сделать. Желательно решение исходя из знаний полученных в первых 3-х уровнях. Если есть возможность ткните в нужную лекцию, если это ранее разбиралось ,а я пропустил. Я обязательно перечитаю ибо я уверен, что можно пользоваться полученными результатами из одного метода в другом не перезапуская его снова Заранее спасибо всем откликнувшимся. P.S. Сейчас за незнанием решения я сделал вот такой костыль и мой код всей программы вроде работает, но я понимаю, что он убог))

package zpVadima; import java.io.*; import java.util.*; public class zpVadima  public static void main(String[] args) throws Exception  int zpVadimaInRub = raschetZpVadima(); double kursUa = 2.67; double zpVadimaInUa = zpVadimaInRub / kursUa; System.out.println("К выплате Вадиму: " + zpVadimaInRub + " рублей"); System.out.println("или " + zpVadimaInUa + " гривен."); > public static int raschetZpVadima() throws Exception  int vadimStavka = 250; System.out.println("Введите количество отработанных часов"); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String sHour = reader.readLine(); int hour = Integer.parseInt(sHour); int zpVadima = hour * vadimStavka; return zpVadima; > >

Источник

Передача метода в качестве параметра в Java

Передача метода в качестве параметра в Java

  1. Передача метода в качестве параметра с помощью функции lambda в Java
  2. Передача метода в качестве параметра пользовательскому методу в Java
  3. Передача метода в качестве параметра с помощью справочника по методам в Java

В этом руководстве описывается передача метода в качестве параметра в Java. Чтобы помочь вам разобраться в этой теме, мы включили примеры кодов.

В Java с нуля нет концепции метода передачи в качестве параметра. Однако мы можем добиться этого, используя ссылку на лямбда-функцию и метод в Java 8. Итак, в этой статье мы сосредоточимся на этих двух темах, чтобы передать метод в качестве параметра.

Лямбда-функция или лямбда-выражение — это концепция, которая была введена в Java 8. Это краткий способ написать функцию, следуя подходу функционального стиля. Поскольку Java и Java 8 считаются объектно-ориентированными языками, они поддерживают функциональный подход к написанию кода.

Передача метода в качестве параметра с помощью функции lambda в Java

Это простой пример лямбда-выражения, в котором мы используем его для перебора элементов ArrayList . Обратите внимание, что мы передаем лямбда-функцию методу forEach() интерфейса Iterable . Класс ArrayList реализует интерфейс Iterable .

Вот как мы можем передать метод (лямбда-функцию) в качестве параметра в Java:

public class SimpleTesting  public static void main(String[] args)   ArrayListInteger> evens = new ArrayListInteger>();  evens.add(10);  evens.add(20);  evens.add(30);  evens.add(40);  evens.forEach( (n) ->  System.out.println(n); > ); // passing lambda as a parameter  > > 

Передача метода в качестве параметра пользовательскому методу в Java

Помимо встроенного метода forEach() , мы можем передать его в качестве параметра пользовательскому методу. В этом примере мы создали интерфейс Doable , имеющий метод doSomething() . В классе SimpleTesting есть метод show() , который вызывает метод doSomething() . Внутри метода main () мы создали лямбда-функцию и передали ее методу show() .

Обратите внимание, что это строка, в которой мы передаем метод (лямбда-функцию) в качестве параметра методу.

show("Hello", doa); // passing lambda function as parameter 

Источник

Как передать метод в качестве параметра java

Передать метод в качестве параметра можно разными способами. Рассмотрим некоторые из них.

1) Воспользуемся функциональным интерфейсом Predicate :

import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; public class App  public static void main(String[] args)  ListString> list1 = List.of("1", "22", "333", "4444"); ListString> filteredList1 = filterList(list1, x -> x.length() >= 3); System.out.println(filteredList1); // => [333, 4444] ListInteger> list2 = List.of(1, 2, 3, 4); ListInteger> filteredList2 = filterList(list2, x -> x >= 3); System.out.println(filteredList2); // => [3, 4] > public static T> ListT> filterList(ListT> list, PredicateT> rool)  return list.stream() .filter(x -> rool.test(x)) .collect(Collectors.toList()); > > 

2) Воспользуемся готовым функциональным интерфейсом UnaryOperator :

public static void superMethod(UnaryOperatorString> method)  String str = "Hexlet"; String result = method.apply(str); System.out.println(result); > // вызов с передачей методов public class App  public static void main(String[] args) throws Exception  // передадим стандартный метод superMethod(String::toUpperCase); // => HEXLET // передадим лямбда-функцию superMethod(s -> s + "!"); // => hexlet! // передадим собственный метод superMethod(App::reverse); // => telxeh > public static String reverse(String str)  StringBuilder builder = new StringBuilder(); builder.append(str); return builder.reverse().toString(); > > 

3) Создадим собственный интерфейс и передадим объект этого типа в нашу функцию :

interface MyInterface  int count(int a, int b, int c); > public static void superMethodInterface(MyInterface method)  int a = 5, b = 10, c = 20; int result = method.count(a, b, c); System.out.println(result); > // вызов с передачей методов public class App  public static void main(String[] args) throws Exception  MyInterface count = new MyInterface()  @Override public int count(int a, int b, int c)  return a + b + c; > >; superMethodInterface(count); // => 35 superMethodInterface((a,b,c) -> a * b * c); // => 1000 superMethodInterface((a,b,c) -> a + b - c); // => -5 > > 

4) Получим метод с помощью рефлексии и передадим его :

public static void superMethodReflection(Object object, Method method) throws Exception  int a = 10; int b = 20; int result = (int) method.invoke(object, a, b); System.out.println(result); > // вызов с передачей методов public class App  public static void main(String[] args) throws Exception  // передадим стандартный метод Method method = Integer.class.getDeclaredMethod("max", int.class, int.class); superMethodReflection(0, method); // => 20 method = Integer.class.getDeclaredMethod("sum", int.class, int.class); superMethodReflection(0, method); // => 30 // передадим собственный метод method = App.class.getDeclaredMethod("concate", int.class, int.class); superMethodReflection(new App(), method); // => 1020 > public static int concate(int a, int b)  return Integer.parseInt("" + a + b); > > 

Источник

Читайте также:  Red box in html
Оцените статью