Java Использование throw при создании метода
Добрый день Опять прошу не сильно пинать и подсказать где делаю ошибку в обучении. Есть задача
Использование throw
• Создать класс MoneyTransactionUtil
• Создать приватный конструктор.
• Создать статический метод для отправки денег с одного счета на другой: sendTo(номерКарты, номерКарты, сумма).
• В методе следует обработать несколько возможных исключительных ситуаций:
• Если номер карты отправителя и карты получателя совпадают, нужно выбросить RuntimeException. (throw new RuntimeException())
• Если сумма является нулевой, отрицательной или больше 100_000, нужно выбросить RuntimeException. (throw new RuntimeException())
• Добавить ключевое слово throws и RuntimeException к объявлению метода.
• Если исключительных ситуаций нет, вывести на экран: «Сумма s, со счета n успешно переведена на счет m»
public class MoneyTransactionUtil {
private MoneyTransactionUtil() {
}
public static double sendTo (int idSender, int idReciver, double money)throws RuntimeException {
try {
if (money > 0 & idReciver != idSender)
idReciver += money;
if (idReciver == idSender)
throw new RuntimeException("Отправитель равен получателю");
} catch (RuntimeException r) {
System.out.println(r.getMessage());
}
//return (int) idReciver;
return money;
}
Я понимаю что где то косяк помогите разобраться что намудрил Заранее спасибо кто отзовется
Ответы (1 шт):
Думаю, этот код вам поможет:
public class MoneyTransactionUtil {
public static void main(String[] args) {
try {
// Успешно
sendTo(12345, 98765, 0.999);
// Ошибка
sendTo(12345, 12345, 55);
} catch (RuntimeException r) {
System.out.println(r.getMessage());
}
}
public static void sendTo(int idSender, int idReceiver, double money) {
if (idReceiver == idSender)
throw new RuntimeException("Отправитель равен получателю");
if (money < 0 || money > 100_000)
throw new RuntimeException("Некорректная сумма");
System.out.println("Сумма " + money + ", со счета " + idSender +
" успешно переведена на счет " + idReceiver);
}
}
Здесь блок try..catch вынесен в тестовый метод main, добавлена проверка из задания, функция изменена на метод (void, а не возвращаемый тип). Так же у вас была ошибка в том, что вы пытались неправильно написать оператор И (надо && вместо &), а так же прибавляли деньги к номеру счёта (что по задания вообще не нужно делать).
Так же хочу добавить, что RuntimeException является непроверяемым исключением, поэтому throws после функции писать не обязательно.