如何使用具有不同输出长度的Printf在列中创建输出-Java

时间:2018-11-24 00:09:56

标签: java string eclipse printf

我被要求用三种方法创建代码。该程序应该为每种转换方法都提供一个方法,分别用于decimalToBinary,decimalToOctal和decimalToHexadecimal,然后将结果显示在包含四列的表中:使用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 :(得分:0)

看看printf() documentation,尤其是format string syntax。您在宽度说明符之后。例如,

printf("%20s", s);

将确保您的输出宽度为20个字符。您可以尝试各种变体,以实现所需的功能。