Мне нужно создать рекурсивный метод для преобразования базовых 10 чисел в любые базовые числа. http://i.stack.imgur.com/nJMmm.jpgномер базы преобразования рекурсивный метод
- Если основание 2, то префикс строки с «0b»
- Если основание 16, то префикс строки с «0x»
- Если основание не является 10, то никакого префиксом (или постфикс)
- во всех остальных случаях суффиксом строку с основанием в квадратных скобках
Примеры:
- Если значение равно 212 и основание 2, то метод возвращает «0b11010100»
- Если значение равно 212 и основание 10, то метод возвращает «212»
- Если значение равно 212 и основание 12, то метод возвращает «119 [база 12]»
- Если значение равно 212 и основание 20, то метод возвращает «AC [основание 20]»
- Если значение равно 212 и основание 16, то метод возвращает «0xD4»
- Если значение равно 212, а основание равно 60, тогда метод возвращает «3.32 [основание 60]»
Моя проблема заключается в том, что «во всех остальных случаях постфиксная строка с базой в квадратных скобках» бит. Я не могу разобраться. Не могли бы вы помочь, пожалуйста?
Вот мое общее решение:
public class NaturalNumber {
private int value;
public NaturalNumber(int value){
this.value = value;
}
public void setValue(int value){
this.value = value;
}
public int getValue(){
return value;
}
@Override
public String toString() {
return Integer.toString(value);
}
public String getValueBase(int base){
return getValueBase(value, base);
}
public static String getValueBase(int value, int base){
int quotient = value/base;
int remainder = value % base;
char ch = (char)(remainder+55);
if(quotient <= 0) {
if(remainder >= 10 && remainder <= 36){
if(base==16)
return "0x" + ch;
return "" + ch;
}
else {
if(base==2)
return "0b" + remainder;
if(base==16)
return "0x" + remainder;
return "" + remainder;
}
}
else
{
if(base > 36){
return getValueBase(quotient, base) + "." + remainder;
}
if(remainder >= 10 && remainder <= 36){
return getValueBase(quotient, base) + ch;
}
return getValueBase(quotient, base) + remainder;
}
}
public static void main(String[] args) {
NaturalNumber n = new NaturalNumber(68654332);
System.out.println(n.getValueBase(38));
}
}
Вы не задали вопрос. – shmosel
Моя проблема заключается в добавлении [base] в конец. Не могли бы вы помочь, пожалуйста? – Isidore
Еще не вопрос. – shmosel