Выполнение и обработка исключений

package learnjava;

import java.util.Scanner;

public class exception {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int x =1;
    do {
        try {
            System.out.println("Input first number : ");
            int n1 = input.nextInt();
            System.out.println("Input second number : ");
            int n2 = input.nextInt();
            int sum = n1 / n2;
            System.out.println("result = "+sum);
            x = 2;

        } catch (Exception e) {
            System.out.println("Error");

        }

    } while (x == 1);

     }
 }

Я смотрел обучающие программы по java в thenewboston ..... Я хочу спросить вас ... почему x = 2 ...? Вы можете объяснить почему? ... спасибо

так что цикл оборвется, не очень хороший код, если его нужно объяснять. Лучше использовать полезные имена переменных

Scary Wombat 13.11.2018 05:35

в чем вопрос? Вы устанавливаете x равным 2 через x=2, и теперь вы спрашиваете, почему x равен 2?

UninformedUser 13.11.2018 05:37

когда пользователь вводит все правильные целочисленные входы, вы не хотите повторно просить пользователя ввести что-то, поэтому цикл будет прерван, когда x!=1

Deadpool 13.11.2018 05:38

Если вы видели учебник, в котором пропагандируется написание кода, похожего на этот, то я бы посоветовал перейти на другой учебник.

Dawood ibn Kareem 13.11.2018 05:41

Угги. Java имеет тип Boolean, и здесь его следует использовать. Я бы заподозрил качество используемых вами руководств, если бы это был их пример кода!

Ken Y-N 13.11.2018 05:42

Он объяснил, что в эту секунду: Учебник по программированию на Java - 82 - Обработка исключений

Rcordoval 13.11.2018 05:47

@AKSW ... да..я только учусь пониманию с ютуба ....

user10644036 13.11.2018 05:50
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
7
59
4

Ответы 4

Этот код плохо подходит к собственной концепции. Тем не менее, Do-While является циклом управления выходом и продолжает выполнять цикл до тех пор, пока x не станет равным любому числу, кроме 1. То есть, если есть какое-либо изменение в x, кроме того, что x = 1, цикл прервется, как в шлейфе перестанет работать. Здесь мы используем try catch, чтобы предотвратить деление любого числа на ноль, и мы используем x = 2 для однократного выполнения цикла и выхода.

В любом случае, это конструктор концепций, но это не то, как можно подходить к этой методологии.

Цикл do-while выполняется один раз без проверки условия. В этом случае условием продолжения цикла while является x == 1. Это потому, что вы установили x = 1 в приведенном выше коде.

Выполняя перед проверкой условия, используя сканер, вы читаете 2 целых числа, выполняете с ними некоторые операции и распечатываете результат. Поскольку логика ожидает, что поток здесь остановится (то есть просто чтение 2 целых чисел и печать результата), x был установлен в 2, то есть x = 2.

Теперь отвечая на ваш вопрос, почему именно x = 2. Это может быть что угодно, кроме 1, который завершит цикл while и не допустит дальнейших итераций.

этот код выполняет деление, если вы установили значение n2 на 0, произошло исключение и напечатали ошибка, а значение x=1 не было изменено, условие while истинно и ваш код снова работает и требуется ввод. если ваш ввод был истинным (n2!=0), ваша операция выполнена и значение x изменилось на два x=2. когда проверено условие while, результат ложный, и цикл do while прерывается. Я пишу комментарий в вашем коде.

package learnjava; 
import java.util.Scanner;
public class exception {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int x =1;
    do {
        try {
            System.out.println("Input first number : ");
            int n1 = input.nextInt();
            System.out.println("Input second number : ");
            int n2 = input.nextInt();
            int sum = n1 / n2;//if your n2 input was 0 exception happened and go to catch block.
            System.out.println("result = "+sum);
            x = 2;// if one time your code execute without exception the x changed to 2. if exception happened your code execute again.

        } catch (Exception e) {
            System.out.println("Error");

        }

    } while (x == 1);

     }
 }

@WildanAlifR В этом случае цикл будет продолжаться до тех пор, пока не обнаружит ошибку, а затем выйдет из цикла, поскольку x=2 закодирован в catch

mannedear 13.11.2018 06:22

@WildanAlifR, если произошло исключение input (n2 == 0) и прерывание do-while. иначе продолжайте снова делать-а.

Mohammad Aziz Nabizada 13.11.2018 06:34

Это просто,

Так работает do while.

Сначала выполняется часть do, если условие в цикле while выполняется, цикл do выполняется снова. Это будет продолжаться до тех пор, пока не будет выполнено условие в цикле while.

 do {
       //work is done. 
       //now lets us change the condition so that we can get out of this do-while loop. 
       // this condition is nothing but setting x equal to nay value other than 1. It can be 2 or 10000 or -1.
    } while (x == 1);

Итак, как только функциональность цикла do удовлетворена, выполняется x == 2. Это гарантирует, что условие в while не выполняется и, следовательно, в коде существует цикл do-while.

Другие вопросы по теме