При каждом вызове метода printBugMethodName в него нужно передать текущий stack trace.
4 раза вызывается 4 раза думаю что передаю
но не проходит проверку.
Мне бы узнать где мой полет мысли свенул не туда или не свернул туда куда нужно.
package com.javarush.task.pro.task14.task1413;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;
/*
Лонг дринк
*/
public class Solution {
public static void main(String[] args) {
Map<String, Integer> screwdriverIngredients = makeScrewdriver();
String screwdriver = screwdriverIngredients.keySet().stream()
.map(key -> key + "=" + screwdriverIngredients.get(key))
.collect(Collectors.joining(", ", "{", "}"));
System.out.println(screwdriver);
}
static Map<String, Integer> makeScrewdriver() {
Map<String, Integer> ingredients = new TreeMap<>();
addIce(ingredients);
addVodka(ingredients);
addJuice(ingredients);
addOrange(ingredients);
return ingredients;
}
static void addIce(Map<String, Integer> ingredients) {
try{ ingredients.put("ice cubes", 7);}catch(Throwable e){printBugMethodName(e.getStackTrace());}
}
static void addVodka(Map<String, Integer> ingredients) {
try{ ingredients.put("vodka", 50);}catch(Throwable e){printBugMethodName(e.getStackTrace());}
}
static void addJuice(Map<String, Integer> ingredients) {
try{ ingredients.put(null, 100);}catch(Throwable e){printBugMethodName(e.getStackTrace());}
}
static void addOrange(Map<String, Integer> ingredients) {
try{ ingredients.put("orange slice", 1);}catch(Throwable e){printBugMethodName(e.getStackTrace());}
}
public static void printBugMethodName(StackTraceElement[] stackTraceElements) {
// for (var e : stackTraceElements){
// System.out.println ( e.getMethodName());
// }
StackTraceElement stackTraceElement = stackTraceElements[1];
System.out.println(stackTraceElement.getMethodName());
}
}