Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class CoveringBases {
- private int originalNumber;
- private int base;
- public CoveringBases() {
- this.askUser();
- this.checkValidity();
- System.out.println(convertNumber());
- }
- private void askUser() {
- Scanner input = new Scanner(System.in);
- System.out.print("Enter the number base 10 to convert: ");
- originalNumber = input.nextInt();
- System.out.print("Enter the new base: ");
- base = input.nextInt();
- }
- private void checkValidity() {
- if (base < 2 || 16 < base) {
- System.out.println("Not an acceptable base.");
- System.exit(0);
- }
- }
- private String convertNumber() {
- String convertedNumber = "";
- // first handle the case of a negative number
- if (originalNumber < 0) {
- originalNumber = (-1) * originalNumber;
- convertedNumber = "-";
- }
- int highestPower = 0;
- // find the highest power occurring
- while (Math.pow(base, highestPower) <= originalNumber) {
- highestPower++;
- }
- highestPower--;
- System.out.println(highestPower);
- return getNthDigit(highestPower, convertedNumber, originalNumber);
- }
- private String getNthDigit(int power, String alreadyConverted, int toConvert) {
- if (toConvert == 0 && power <= 0) {
- return alreadyConverted;
- } else {
- int digit = 0;
- while (((digit + 1) * Math.pow(base, power) <= toConvert) && digit < base) {
- digit++;
- }
- toConvert -= Math.pow(base, power) * digit;
- System.out.println(digit + " " + power + " " + toConvert + " " + alreadyConverted);
- alreadyConverted += Integer.toHexString(digit);
- return getNthDigit(--power, alreadyConverted, toConvert);
- }
- }
- public static void main(String[] args) {
- new CoveringBases();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement