Программа перестает исключать, когда она что-то возвращает? - PullRequest
0 голосов
/ 04 июля 2019
public int max1020(int a, int b) {
  // First make it so the bigger value is in a
  if (b > a) {
    int temp = a;
    a = b;
    b = temp;
  }

  // Knowing a is bigger, just check a first
  if (a >= 10 && a <= 20) return a;
  if (b >= 10 && b <= 20) return b;
  return 0;
}

так что, если и a, и b находятся в диапазоне [10,20], он просто вернет a и перестанет исключать следующие две строки кода?

Ответы [ 4 ]

1 голос
/ 04 июля 2019

поэтому, если и a, и b находятся в диапазоне [10, 20], он просто вернет a и прекратит выполнение следующих двух строк кода?

Сначала проверяется, соответствует ли первое условие функции, затем возвращается значение a. Следующие две строки кода не будут выполнены, поскольку функция вернулась.

Останавливается ли выполнение программы после возврата чего-либо?

Нет, значение не возвращается всей программой, оно просто возвращается конкретной функцией. Позвольте привести пример.

public class Main {

public static void main(String[] args) {
    int result;

    // The method max1020 returns the value of 'a' here
    result = max1020(11,14);
    System.out.println(result);

    // The method max1020 returns the value of 'b' here
    result = max1020(31,11);
    System.out.println(result);

    // The method max1020 returns the value of '0' here
    result = max1020(50,60);
    System.out.println(result);
}

private static int max1020(int a, int b) {
    // First make it so the bigger value is in a
    if (b > a) {
        int temp = a;
        a = b;
        b = temp;
    }

    // Knowing a is bigger, just check a first
    if (a >= 10 && a <= 20) return a;
    if (b >= 10 && b <= 20) return b;
    return 0;
}

}

Ключевое слово return просто выводит вас из функции, в которой вы находитесь, но не выводит вас из всей вашей программы. Когда вы вызываете max1020 () в первый раз, он возвращает a. Видите, он возвращает значение а, но программа все равно будет выполнять другие строки. Он выведет значение переменной result, затем снова вызовет max1020 () для другой пары значений.

0 голосов
/ 04 июля 2019

Вы правы в предположении, что программа проверяет, находится ли a в пределах диапазона, и, учитывая, что результат оценки верен, она вернет значение связи с переменной a.В Java ключевое слово return означает, что программа вернет значение, связанное с ней, и остановит дальнейшее выполнение.

Что касается вашего вопроса о методе void.В Java и многих других языках есть нечто, называемое state , что означает, что существуют некоторые значения вне текущей области выполнения, например, в псевдокоде

   int a = 0
     public void inc (){
     a++
}

Метод inc непринимать любые аргументы (он имеет арность 0), но увеличивает переменную a, которая определена вне области функции, которую он сам.Любой метод, который имеет возвращаемый тип, отличный от void, возвращает определенный тип.

Я надеюсь, что мой ответ был полезным.

0 голосов
/ 04 июля 2019

Вы, похоже, смешиваете метод return и выход из программы (что также можно назвать " код возврата программы ").

В методе, когда достигается строка return, метод останавливается тут же и не выполняет дальнейшие инструкции.

Когда этот метод является методом main, он также является точкой входа в программу. Следовательно, когда main вызывает return, программа фактически останавливается, возвращая код 0 (что означает «успех»).

В Java вы также можете остановить выполнение программы , вызвав System.exit(ret). В этом конкретном случае процесс JVM (который является «вашей программой») прекратит выполнение дальнейших инструкций, , даже если return явно не вызывается (хотя некоторые IDE даст вам ошибки или предупреждения). Код возврата (видимый вызывающим процессом) будет тем, который вы указали с помощью ret.

0 голосов
/ 04 июля 2019

Если a и b находятся в диапазоне [10,20], он всегда возвращает a. Вы правы, как только будет достигнут оператор возврата, он не будет выполнять больше кода.

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