繁体   English   中英

将偶数更改为零的方法

[英]Method that changes even digits to zero

我需要编写一个接收数字的方法,对于其中的任何偶数数字,都将其替换为0数字。

我认为我朝着正确的方向前进,但是当我使用调试器运行它时,我看到偶数不会以偶数返回0。

到目前为止,这就是我所拥有的。

我知道我的英语不好,所以这是一个例子。

对于数字12345,该方法应返回10305。对于数字332,该方法应返回330。

我希望这是可以理解的。 这是我的代码:

public class Assignment1 {

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

    private static int Even(int n) {    
        if (n == 0 ) { 
            return 0 ;
        }
        if (n % 2 == 0) { // if its even
            n= n/10*10; // we cut the right digit from even number to 0
            return (n/10 %10 ) + Even(n/10)*0;
        }
        return Even(n/10)*10 +n;
    }
}

您的基本情况只是检查数字是否为零。 检查此解决方案,如果您有任何疑问,请通知我!

public int evenToZero(int number){

  //Base case: Only one digit
  if(number % 10 == number){
    if(number % 2 == 0){
      return 0;
    }
    else{
      return number
    }
  }
  else{ //Recursive case: Number of two or more digits
    //Get last digit
    int lastDigit = number % 10;
    //Check if it is even, and change it to zero
    if(lastDigit % 2 == 0){
      lastDigit = 0;      
    }
    //Recursive call
    return evenToZero(number/10)*10 + lastDigit
  }    
}

下面是一个递归方法,它将满足您的需求。 使用字符串会更容易,因为它允许您逐位“添加”数字。 这样,以332为例,3 + 3 + 0变为330,而不是6。

每次运行,它都将最右边的数字切掉,因此332变为33,然后是3,然后是0。

public static void main(String[] args) {
            System.out.println(Even(12345));
        }
        private static String Even(int n) {    
            if(n==0)
                return "";
            else if(n%2==0){
                return Even(n/10) + "0";
            }
            else{
                String s = Integer.toString(n%10);
                return Even(n/10) + s;
            }
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM