как получить оператор в блоке finally, напечатанном после оператора return из блока try и catch? - PullRequest
0 голосов
/ 05 марта 2020

Я хочу, чтобы оператор в блоке finally печатался после оператора возврата try and catch block, но оператор в блоке finally всегда печатается до этого.

 1 import java.io.*;
    2 import java.util.*;
    3 public class Division
    4 {
    5     public String divideTwoNumbers(int number1,int number2)
    6     {
    7         try
    8         {
    9         int n=number1/number2;
   10         String ans="The answer is "+n+".";
   11         return ans;
   12         
   13         }
   14         catch(ArithmeticException e)
   15         {
   16             String s1="Division by zero is not possible. ";
   17              return s1;
   18         }
   19         finally
   20         {
   21             System.out.print("Thanks for using the application");
   22         }
   23     }
   24     public static void main(String[] args)
   25     {
   26         Division obj=new Division();
   27         Scanner sc=new Scanner(System.in);
   28         System.out.println("Enter the numbers");
   29         System.out.println(obj.divideTwoNumbers(sc.nextInt(),sc.nextInt()));
   30     }
   31 }

Для ввода:

`15` and `0`

необходим вывод:

`Division by zero is not possible. Thanks for using the application.`

вывод, который я получаю:

Thanks for using the application. Division by zero is not possible.

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Если вы всегда хотите, чтобы сообщение отображалось после печати результата вызова метода, напечатайте его после вызова метода:

System.out.println(obj.divideTwoNumbers(sc.nextInt(),sc.nextInt()));
System.out.println("Thanks for using the application");

И удалите finally.

0 голосов
/ 05 марта 2020

Наконец всегда выполняется и перед возвратом значения ans.

import java.io.*;
import java.util.*;
public class Division {
    public String divideTwoNumbers(int number1, int number2) {
        try {
            int n = number1 / number2;
            String ans = "The answer is " + n + ".";
            return ans;

        } catch (ArithmeticException e) {
            String s1 = "Division by zero is not possible. ";
            return s1;
        }

    }

    public static void main(String[] args) {
        try {
            Division obj = new Division();
            Scanner sc = new Scanner(System.in);
            System.out.println("Enter the numbers");
            System.out.println(obj.divideTwoNumbers(sc.nextInt(), sc.nextInt()));
        }

        finally {
            System.out.print("Thanks for using the application");
        }
    }
}

Вывод: введите числа 15 3 Ответ 5. Спасибо за использование приложения

...