Member 13689608 Ответов: 2

Возврат значений внутри оператора if


package com.company;

public class MinValue {
static int dieRoll() {
    int roll1 = (int) (Math.random() * 1000 % 6 + 1);
    int roll2 = (int) (Math.random() * 1000 % 6 + 1);
    int roll3 = (int) (Math.random() * 1000 % 6 + 1);
    int roll4 = (int) (Math.random() * 1000 % 6 + 1);
    int[] numbers = {roll1, roll2, roll3, roll4};
    int minValue = numbers[0];
    for (int i = 1; i < numbers.length; i++) {
        if (numbers[i] < minValue) {
            minValue = numbers[i];
        }
        if (minValue == roll1) {
            int total = roll4 + roll2 + roll3;
            
        } else if (minValue == roll2) {
            int total = roll1 + roll4 + roll3;
            
        } else if (minValue == roll3) {
            int total = roll1 + roll2 + roll4;
            
        } else if (minValue == roll4) {
            int total = roll1 + roll2 + roll3;
            
        }
    }
    return total;
}


public static void main(String[] args){
    System.out.println(dieRoll());

}




}


Довольно прямолинейно, на самом деле. Я хочу знать, как получить значение для total, которое будет напечатано. Я нуб в этом деле - и гугление определенно не помогло, - так что некоторая помощь с каким-то объяснением была бы широко признательна.

Что я уже пробовал:

Я попытался использовать оператор return в конце каждого оператора if, следуя объявлению int total, но столкнулся с ошибками компиляции.

Patrice T

Показать код, который выдает ошибки и сообщения об ошибках.

2 Ответов

Рейтинг:
2

Patrice T

Отсутствие ошибки компиляции-это хорошее начало, но этого недостаточно, и, очевидно, вы не понимаете, что делает этот код. Использование отладчика - это очень хороший способ обучения, потому что вы видите, как работает ваш код.
Конечно, я могу просто дать вам ответ, это будет магия, и вы ничего не узнаете, так что попробуйте отладчик, и вы поймете и узнаете много сами.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
1

wseng

Вы должны заявить: total до

int roll1 = (int) (Math.random() * 1000 % 6 + 1);
так как вы будете использовать его в функции dieRoll.
static int dieRoll() {
        int total = 0;
           ....
        for (int i = 1; i < numbers.length; i++) {
            if (numbers[i] < minValue) {
                minValue = numbers[i];
            }
            if (minValue == roll1) {
                 total = roll4 + roll2 + roll3;

            } else if (minValue == roll2) {
                 total = roll1 + roll4 + roll3;

            } else if (minValue == roll3) {
                 total = roll1 + roll2 + roll4;

            } else if (minValue == roll4) {
                 total = roll1 + roll2 + roll3;

            }
        }
        return total; 
    }
Объявите переменную внутри вашего основного метода для вызова функции diceRoll. Затем сохраните возвращаемое значение в переменной.