给定一组数字,任务是仅打印那些只有1,2和3作为数字的数字

时间:2018-02-05 15:24:09

标签: java arrays

我目前正在开发一个程序来给出来自用户的整数输入,只打印那些包含数字1 2或3的程序。这是我的代码到目前为止:

public static void main(String[] args){
    Scanner s = new Scanner(System.in);
    int[] x=new int[5];
    System.out.println("Enter 5 integers: ");
    for(int i=0; i<x.length;i++) {
        x[i]=s.nextInt();
        boolean temp=recursion(x[i]);
        if(temp==true) {
            System.out.print(x[i]);
        }
    }   
}

public static boolean recursion(int y) {
    if(y%10==1 || y%10==2 || y%10==3) {
        return true;
    }
    else if(y%10==0) {
        return false;
    }
    else {
        int remain=y/10;
        recursion(remain);
    }

}

所以我的方法非常简单,我使用简单的bool递归来返回true或false,如果它包含1 2或3则为true,否则为false。我遇到的问题是我在递归其他语句中没有返回任何内容。我知道我必须返回一些东西,但不知道该返回什么或者是否有必要。我可以改变什么来使这项工作?

3 个答案:

答案 0 :(得分:2)

我认为你必须要做

return recursion(remain);

答案 1 :(得分:2)

你递归的基本情况有点偏,所以在声明中 USER_DOES_NOT_BELONG_TO_SPECIFIED_ACCOUNT,数字100会导致失败,即使它有效。你希望你的假基础案例实际上是else if(y%10==0),这意味着你已经完成了整个数字。解决方案看起来像:

else if (y == 0)

编辑:在数字上调用绝对值也可以使其适用于负数,但是你可以在传入的整数上调用abs来达到相同的效果。

答案 2 :(得分:0)

使用以下代码,希望这会有所帮助。

public static boolean recursion(int y) {
    if(y%10==1 || y%10==2 || y%10==3) {
        return true;
    }
    else if(y%10==0) {
        return false;
    }
    else {
        int remain=y/10;
        return recursion(remain);
    }

}