当前位置: 首页 > 知识库问答 >
问题:

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

廉鸿运
2023-03-14

我目前正在开发一个程序来给用户输入整数,只打印那些包含数字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个答案

滕项明
2023-03-14

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

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

}
太叔飞翰
2023-03-14

我想你只需要做

return recursion(remain);
子车征
2023-03-14

您的递归基本情况有点不对劲,因此在语句eredif(y==0)中,数字100将导致它失败,即使它是有效的。您希望您的假基本情况实际上是eredif(y==0),这意味着您已经遍历了整个数字。解决方案如下所示:

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

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

 类似资料:
  • 如何编写一个递归回溯函数,在该函数中,它打印所有的N位数字,使数字中每3个连续数字的总和正好等于S,其中N小于或等于10,并且是从0到27。 代码: 示例输出: 我很困惑如何递归地写这个。

  • 问题内容: 在我的中,我需要使用,但是我不确定如何截断到2个小数位: 示例:获取 打印为: 问题答案: 用这个:

  • 我正在开发一个数独小程序,我想制作它的单元格(扩展JTextField),以便它只接受0-9和长度为1之间的整数。稍后我会对它进行更多限制(以便它符合游戏规则)。我从: 在这里,我试图过滤输入,对于开始,我只是试图将其限制为整数和一个数字,但似乎我可以输入任意多的数字,而最后一行不会被触发。 想在这里得到一些帮助,谢谢:

  • 我正在工作的一个regex只允许在逗号前最多10个数字和逗号后最多3个数字。 到目前为止,我已经想出了这个: 我将验证JavaScript中的输入。 以下示例可作为用户输入: 1234567890,123 4,1 234,45 56457 输入必须始终以自然数字开头,并且只能出现逗号。

  • 本文向大家介绍限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数,包括了限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数的使用技巧和注意事项,需要的朋友参考一下 onlyNumber.html 测试代码: 以上代码内容简单给大家介绍了限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数的知识,希望能够帮助到大家!

  • 下面是完整的问题: 问题3【30分】。编写一个包含两个正整数k和n的函数,其工作方式如下1。打印由数字1组成的长度k的所有递增序列。。。n 2。返回此类序列的数目。例如 打印序列的具体顺序由您决定。在数字之间加一个空格。别忘了用新行分隔序列。您的函数应该在合理的时间内对输入n、k进行处理,直到20。[提示:使用递归。您可能还想使用助手函数] 我的实现只打印第一个序列,然后停止。我哪里做错了? 这是