Замените все 0 на 5 || я написал код, но он не работает | o/p в обратном порядке [закрыто]
Проблема: дано число N. Задача состоит в том, чтобы завершить функцию convertFive(), которая заменяет все нули в числе на 5 мой код | пожалуйста, подтвердите любую помощь мне
public class Replaceall0swith5 {
public static void convertFive(int n) {
//add code here.
int digit, sum = 0;
while (n > 0) {
digit = n % 10;
if (digit == 0) {
digit = 5;
}
sum = sum * 10 + digit;
n = n / 10;
}
System.out.print(n + " All O's replaced with 5 " + sum);
}
public static void main(String[] args) {
Replaceall0swith5.convertFive(1004);
}
}
3 ответа
Решение
Попробуй это.
public static void convertFive(int n) {
int sum = 0;
for (int rank = 1; n > 0; n = n / 10, rank *= 10) {
int digit = n % 10;
if (digit == 0)
digit = 5;
sum = sum + digit * rank;
}
System.out.print(n + " All O's replaced with 5 " + sum);
}
Это в основном то же самое, что и перестановка числа, за исключением того, что оно меняет 0 на 5.
while (n > 0) {
digit = n % 10;
if (digit == 0) {
digit = 5;
}
sum = sum * 10 + digit;
n = n / 10;
}
цифра = 4: сумма = 0 * 10 + 4 = 4
цифры = 0: сумма = 4 * 10 + 5 = 45
цифра = 0: сумма = 45 * 10 + 5 = 455
цифр = 1: сумма = 455 * 10 + 1 = 4551 Простым
решением было бы преобразовать его в строку и заменить 0 на 5. @Fmxerz уже дал решение для этого.
или, если вы собираетесь с этим, вы можете использовать функцию Math.pow.
import java.lang.Math;
....
public static void convertFive(int n) {
int i = 0;
int digit, sum = 0;
while (n > 0) {
digit = n % 10;
if (digit == 0) {
digit = 5;
}
sum = sum + digit*(int)Math.pow(10,i);
n = n / 10;
i++;
}
System.out.print(n + " All O's replaced with 5 " + sum);
}
Есть ли причина, по которой вы используете модуль для замены?
public class Replaceall0swith5 {
public static void convertFive(int n) {
int replacedValues = Integer.valueOf(String.valueOf(n).replace("0","5"));
System.out.print(n + " All O's replaced with 5 " + replacedValues);
}
public static void main(String[] args) {
Replaceall0swith5.convertFive(1004);
}
}