[英]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.