package com.javarush.test.level30.lesson02.home01;
import java.math.BigInteger;
/* Конвертер систем счислений
Реализуйте логику метода convertNumberToOtherNumerationSystem, который должен переводить число number.getDigit()
из одной системы счисления(numerationSystem) в другую (expectedNumerationSystem)
бросьте NumberFormatException, если переданное число некорректно, например, число "120" с системой счисления 2
Валидация для - number.getDigit() - целое не отрицательное
Метод main не участвует в тестировании
*/
public class Solution {
public static void main(String[] args) {
Number number = new Number(NumerationSystemType._10, "6");
Number result = convertNumberToOtherNumerationSystem(number, NumerationSystemType._2);
System.out.println(result); //expected 110
}
public static Number convertNumberToOtherNumerationSystem(Number number, NumerationSystem expectedNumerationSystem) throws NumberFormatException {
BigInteger a = new BigInteger(number.getDigit(), number.getNumerationSystem().getNumerationSystemIntValue());
return new Number(expectedNumerationSystem, a.toString(expectedNumerationSystem.getNumerationSystemIntValue()));
}
}
package com.javarush.test.level30.lesson02.home01;
public enum NumerationSystemType implements NumerationSystem {
_16,
_12,
_10,
_9,
_8,
_7,
_6,
_5,
_4,
_3,
_2;
@Override
public int getNumerationSystemIntValue() {
return Integer.parseInt(this.name().substring(1));
}
}
package com.javarush.test.level30.lesson02.home01;
import java.util.Objects;
public class Number {
private NumerationSystem numerationSystem;
private String digit;
public Number(NumerationSystem numerationSystem, String digit) {
this.numerationSystem = numerationSystem;
this.digit = digit;
}
public NumerationSystem getNumerationSystem() {
return numerationSystem;
}
public String getDigit() {
return digit;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Number number = (Number) o;
return Objects.equals(numerationSystem, number.numerationSystem) &&
Objects.equals(digit, number.digit);
}
@Override
public int hashCode() {
return Objects.hash(numerationSystem, digit);
}
@Override
public String toString() {
return "Number{" +
"numerationSystem=" + numerationSystem +
", digit='" + digit + '\'' +
'}';
}
}
package com.javarush.test.level30.lesson02.home01;
public interface NumerationSystem {
int getNumerationSystemIntValue();
}
Leave A Comment