Понимаю, что решение далеко от правильного, но сейчас не могу разобраться со строчкой:
String firstNumber = "0";
Если в значении стоит ноль, то при конкатенации строк (firstNumber += Integer.toString(i)) он "не учитывается". Я ожидаю получить на выходе 025, но получается 25.
Однако если поставить вместо 0 другую цифру (1, 2, 3), то они подставляются, получается 125, 225, 325 соответственно.
Подскажите, почему 0 не подставляется так же? package com.javarush.task.pro.task09.task0905;
import java.util.regex.Pattern;
/*
Восьмеричный конвертер
*/
public class Solution {
public static void main(String[] args) {
int decimalNumber = 21;
System.out.println("Десятичное число " + decimalNumber + " равно восьмеричному числу " + toOctal(decimalNumber));
int octalNumber = 25;
System.out.println("Восьмеричное число " + octalNumber + " равно десятичному числу " + toDecimal(octalNumber));
}
public static int toOctal(int decimalNumber) {
//напишите тут ваш код
if(decimalNumber <= 0) {
return 0;
} else {
int i = 0;
String firstNumber = "0";
do {
i = decimalNumber / 8;
firstNumber += Integer.toString(i);
} while(i > 8);
firstNumber += Integer.toString(decimalNumber % 8);
int finalNumber = Integer.parseInt(firstNumber);
return finalNumber;
}
}
public static int toDecimal(int octalNumber) {
//напишите тут ваш код
return 0;
}
}
do .. while
продолжает исполнение пока условие цикла истинно. Поскольку9 > 8
, то условие соблюдено, цикл продолжается... И у Вас в цикле нет операцииi = i / 8
, у Вас естьi = decimalNumber / 8
, а значениеdecimalNumber
в цикле не меняется.