【问题标题】:How to create outputs in columns using Printf with varied output lengths - Java如何使用具有不同输出长度的 Printf 在列中创建输出 - Java
【发布时间】:2019-04-26 12:05:23
【问题描述】:

我被要求用三种方法创建一个代码。这个程序应该有一个方法来处理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;

}

}

【问题讨论】:

    标签: java string eclipse printf


    【解决方案1】:

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

    printf("%20s", s);
    

    将确保您的输出宽度为 20 个字符。您可以尝试各种变化来实现您想要的。

    【讨论】:

    • 我尝试了不同的长度,我只是在粘贴代码时忽略了长度,因为我意识到问题是即使我输入了 20 个字符或 15 个字符,或者任何它与不同的字符不一致输入,因为某些输入会产生更长的输出。
    • 例如,如果用户输入的是“30”,则此代码有效 System.out.println("请输入您的十进制数"); int 十进制 = input.nextInt(); System.out.printf("十进制:%20d\n", 十进制); String binary=decimalToBinary(decimal); System.out.printf("二进制: %21s\n", 二进制);字符串 octa=decimalToOctal(decimal); System.out.printf("八进制:%22s\n", octa);字符串 hexa=decimalToOctal(decimal); System.out.printf("Hexa:%24s\n", hexa);任何其他输入不是内联
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 2017-03-12
    • 2022-01-23
    • 2021-01-02
    • 2013-04-04
    相关资源
    最近更新 更多