знаю, что можно написать всё гораздо компактнее, но возникло желание без каких-либо подсказок решить. Результат - этот Франкенштейн. Если у кого-то будет достаточно свободного времени и желания, чтобы разобраться в моём коде, то подскажите, пожалуйста, что не так
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;
String s ="";
int a = decimalNumber%8;
decimalNumber -=a;
int maxPow = 2;
while (decimalNumber!=0)
{
maxPow--;
int b =(int) Math.pow(8, maxPow);
while (b<=decimalNumber)
{maxPow++;
b = (int)Math.pow(8, maxPow);
}
maxPow--;
if (maxPow==0)
break;
b = (int)Math.pow(8, maxPow);
for (int i = 7; i != 0; i--)
{
if (b*i <= decimalNumber)
{
s = s+Integer.toString(i);
decimalNumber-=b*i;
break;
}
}
}
if (a !=0)
s = Integer.toString((int)0)+ s + Integer.toString(a);
return Integer.parseInt(s);
}
public static int toDecimal(int octalNumber) {
//напишите тут ваш код
if (octalNumber <=0)
{ return 0;}
char [] arr = String.valueOf(octalNumber).toCharArray();
int result = 0;
for (int i = 0; i < arr.length-1; i++)
{
result += Math.pow(8,arr.length-1-i)*Character.getNumericValue(arr[i]);
}
return result+Character.getNumericValue(arr[arr.length-1]);
}
}