Java 私有布尔值无法识别“中的返回”;“如果声明”;

Java 私有布尔值无法识别“中的返回”;“如果声明”;,java,if-statement,boolean,private,Java,If Statement,Boolean,Private,我的代码: 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 vo

我的代码:


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;
        }

    }
} 

导入javafx.event.ActionEvent;
导入javafx.scene.control.Label;
导入java.util.array;
导入java.util.Random;
公共类控制器{
公共标签基诺;
公共标签loto;
公共随机rd=新随机();
公共作废点击(ActionEvent ActionEvent){
字符串pom=“”;
int[]ken=zrebuj(10,80);
pom=数组.toString(肯);
pom=pom.substring(1,pom.length()-1);
基诺.塞特克斯(pom);
ken=zrebuj(5,35);
pom=数组.toString(肯);
pom=pom.substring(1,pom.length()-1);
loto.setText(pom);
}
私有int[]zrebuj(int poset,int max){
int[]cisla=新的int[pocet];
for(int i=0;i
我的问题是,当我启动程序时,它崩溃了,它在私有布尔值上说:“缺少返回语句”,甚至认为它就在if语句中

你能帮我吗?谢谢


*另外,如果你有任何改进的建议,请在报告中告诉我;)

您看到的错误是有效的,因为:

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
}
private boolean-jeTam(int[]cisla,int-tah){
for(int i=0;i//如果
cisla.length==0
,该方法将返回什么?@AndyTurner它永远不会返回0@DownFury编译器不知道这一点。您得到的错误是编译器错误,不是在运行时。@f1sh但它设置为pocet为10和5,并且等于cislo@DownFury再次重申:编译器不知道这一点。编译器相当愚蠢(或者我应该说,很简单),在许多方面:它考虑总是执行
循环的唯一时间是如果条件是一个计算结果为true的常量表达式,例如
true
。但是,值得指出的是,循环中的
返回false
可能不是有意的-如果数组是非空的。@tomerpacific,所以它总是需要一个return语句,循环中的return语句除外?@DownFury每当您在函数签名中声明要返回一个值时,那么对于每个逻辑流,该返回值必须出现。如果我的回答对您有帮助,请将其标记为return语句。
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

}