Как создать выходные данные в столбцах, используя Printf с различной выходной длиной - Java - PullRequest
0 голосов
/ 24 ноября 2018

Меня попросили создать код тремя способами.Эта программа должна иметь метод для каждого из преобразований decimalToBinary, decimalToOctal и decimalToHexadecimal, а затем отображать результаты в таблице с четырьмя столбцами: Decimal, Binary, Octal и Hexadecimal, используя printf

Мне удалось создатькод для выполнения преобразований, однако мне очень трудно понять, как напечатать код в столбце.Я провел исследование, и я знаю, как использовать printf, однако я запутался, так как длина выходных данных будет отличаться каждый раз.Как я могу заставить их отображать одинаково?Вот мой код.

import java.util.Scanner;
public class Convert {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    System.out.println("Please enter your decimal number");

    int decimal = input.nextInt();
    System.out.printf("Decimal: %d\n", decimal);

    String binary=decimalToBinary(decimal);
    System.out.printf("Binary: %s\n", binary);

    String octa=decimalToOctal(decimal);
    System.out.printf("Octal: %s\n", octa);


    String hexa=decimalToOctal(decimal);
    System.out.printf("Hexa:%s\n", hexa);


}

public static String decimalToBinary(int decimal) {

    int remainder;
    String answer="";

    while (decimal>0) {
    remainder=decimal%2;
    decimal=decimal/2;
    answer=remainder+answer;

    }
    return answer;

}

public static String decimalToOctal(int decimal) {

    int remainder;
    String answer="";

    while (decimal>0) {
    remainder=decimal%8;
    decimal=decimal/8;
    answer=remainder+answer;    
    }
    return answer;
}

public static String decimalToHexadecimal(int decimal) {

    int remainder;
    String answer="";


    while (decimal>0) {
        remainder=decimal%16;
        decimal=decimal/16;

        if (remainder==10)
            answer= "A" + answer;
        else if (remainder==11)
            answer= "B" + answer;
        else if (remainder==12)
            answer= "C" + answer;
        else if (remainder==13)
            answer= "D" + answer;
        else if (remainder==14)
            answer= "E" + answer;
        else if (remainder==15)
            answer= "F" + answer;
        else answer=remainder+answer;
    }
    return answer;

}

}

1 Ответ

0 голосов
/ 24 ноября 2018

Ознакомьтесь с документацией printf () , в частности с синтаксисом строки формата .Вы после спецификаторов ширины.Например,

printf("%20s", s);

обеспечит ширину вашего вывода в 20 символов.Вы можете поиграть с вариациями, чтобы добиться того, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...