Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.70 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class CoveringBases {
  4.     private int originalNumber;
  5.     private int base;
  6.  
  7.     public CoveringBases() {
  8.         this.askUser();
  9.         this.checkValidity();
  10.         System.out.println(convertNumber());
  11.     }
  12.  
  13.     private void askUser() {
  14.         Scanner input = new Scanner(System.in);
  15.         System.out.print("Enter the number base 10 to convert: ");
  16.         originalNumber = input.nextInt();
  17.         System.out.print("Enter the new base: ");
  18.         base = input.nextInt();
  19.     }
  20.  
  21.     private void checkValidity() {
  22.         if (base < 2 || 16 < base) {
  23.             System.out.println("Not an acceptable base.");
  24.             System.exit(0);
  25.         }
  26.     }
  27.  
  28.     private String convertNumber() {
  29.  
  30.         String convertedNumber = "";
  31.         // first handle the case of a negative number
  32.         if (originalNumber < 0) {
  33.             originalNumber = (-1) * originalNumber;
  34.             convertedNumber = "-";
  35.         }
  36.  
  37.         int highestPower = 0;
  38.         // find the highest power occurring
  39.         while (Math.pow(base, highestPower) <= originalNumber) {
  40.             highestPower++;
  41.         }
  42.         highestPower--;
  43.         System.out.println(highestPower);
  44.         return getNthDigit(highestPower, convertedNumber, originalNumber);
  45.     }
  46.  
  47.     private String getNthDigit(int power, String alreadyConverted, int toConvert) {
  48.         if (toConvert == 0 && power < 0) {
  49.             return alreadyConverted;
  50.         } else {
  51.             int digit = 0;
  52.             while (((digit + 1) * Math.pow(base, power) <= toConvert) && digit < base) {
  53.                 digit++;
  54.             }
  55.             toConvert -= Math.pow(base, power) * digit;
  56.             System.out.println(digit + " " + power + " " + toConvert + " " + alreadyConverted);
  57.             alreadyConverted += Integer.toHexString(digit);
  58.             return getNthDigit(--power, alreadyConverted, toConvert);
  59.         }
  60.     }
  61.  
  62.     public static void main(String[] args) {
  63.         new CoveringBases();
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement