Частное логическое значение не может распознать возвращение в выражении «если» - PullRequest
0 голосов
/ 14 марта 2020

Мой код:


import javafx.event.ActionEvent;
import javafx.scene.control.Label;

import java.util.Arrays;
import java.util.Random;

public class Controller {
    public Label keno;
    public Label loto;
    public Random rd = new Random();

    public void click(ActionEvent actionEvent) {

        String pom = "";
        int[] ken = zrebuj(10, 80);
        pom = Arrays.toString(ken);
        pom = pom.substring(1, pom.length() - 1);
        keno.setText(pom);


        ken = zrebuj(5, 35);
        pom = Arrays.toString(ken);
        pom = pom.substring(1, pom.length() - 1);
        loto.setText(pom);
    }

    private int[] zrebuj(int pocet, int max) {

        int[] cisla = new int[pocet];

        for (int i = 0; i < cisla.length; i++) {
            int tah = rd.nextInt(max) + 1;

            if (jeTam(cisla, tah)==false) {
                cisla[i] = tah;
            }
            else i--;
        }
        Arrays.sort(cisla);
        return cisla;
    }

    private boolean jeTam(int[] cisla, int tah) {

        for (int i = 0; i < cisla.length; i++) {

            if (cisla[i] == tah) {
                return true;
            }
            else return false;
        }

    }
} 

Моя проблема в том, что, когда я запускаю программу, она падает и выдает: «Отсутствует оператор возврата» в приватном логическом значении, даже подумал Прямо здесь, если заявление.

Не могли бы вы помочь мне, пожалуйста? Спасибо!

* Кроме того, если у вас есть какие-либо советы, чтобы сделать его лучше, просто скажите мне в комментариях;)

1 Ответ

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

Ошибка, которую вы видите, действительна, потому что:

private boolean jeTam(int[] cisla, int tah) {

    for (int i = 0; i < cisla.length; i++) {

        if (cisla[i] == tah) {
            return true;
        }
        else return false;
    }
  // <---- NO RETURN STATEMENT
}

Вы не указали возвращаемое значение, когда заканчивается значение для l oop. Это означает, что ваш for l oop запускается и при первом запуске возвращает false или true (на основе вашей логики c).

Но компилятор смотрит на ваш код и видит, что отсутствует пропущенное возвращение оператор в конце метода.

private boolean jeTam(int[] cisla, int tah) {

    for (int i = 0; i < cisla.length; i++) {

        if (cisla[i] == tah) {
            return true;
        }
        else return false;
    }

   return false //For Example

}
...