将偶数数字更改为零的方法

时间:2018-01-22 18:32:10

标签: java

我需要编写一个接收数字的方法,对于其中的任何偶数位,用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;
    }
}

2 个答案:

答案 0 :(得分:1)

您的基本情况仅检查数字是否为零。检查此解决方案,如果您有疑问,请告诉我们!

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

答案 1 :(得分:0)

下面是一个递归方法,可以满足您的需求。使用字符串会更容易,因为它允许您逐位“添加”数字。这样,使用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;
            }
        }