3

所以我得到了这个 Java 代码,我试图在其中输出所有 128 个可能的 ASCII 代码、它们的十六进制值和十进制值。这是我现在拥有的代码。

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {


            Scanner Number = new Scanner(System.in);
            System.out.println("How many groups: ");
            int usernumber = Number.nextInt();

            int counter = 0;

            for (int i = 0; i < 1; i++) {
                for (int j = 0; j < 128; j++) {
                   String output = "";
                    if (j == 7 | j == 8 | j == 9 | j == 10 | j == 13){
                      output += " ";
                    } else {
                       output += (char) j;
                    }
                    output += " " + j + " " + Integer.toHexString(j);

                    if (Integer.toHexString(j).length() < 2){
                        output += "     ";
                    } else {
                        output += "\t";
                    }

                    if (counter == usernumber) {
                        output += "\n";
                        counter = 0;
                    }

                    System.out.print(output);
                    counter++;
                }
                System.out.println("\n ");
            }
    }
}

我正在努力实现这一目标:

期望的输出

但是,我的控制台输出格式不正确,并且我的表格被严重误解,如您所见[here]

电流输出

关于我做错了什么的任何帮助或想法?在我的代码中,由于某些数字被分配给无法在控制台中正确输出的声音或其他字符,我试图弥补留空的空间等等。

4

1 回答 1

1

而不是添加不同类型的字符,如:

if (Integer.toHexString(j).length() < 2){
    output += "     ";
} else {
    output += "\t";
}

您应该尝试设置应显示的值的正确字符数,您可以使用 String.format 来完成,尝试更改以下语法。

String.format("%-2s - %-2d", stringValue, intValue);

您可以将您的 for 更改为以下代码,这将完成这项工作

for (int j = 0; j < 128; j++) {
        counter++;
        char firstChar = (char) j;
        if (j == 7 || j == 8 || j == 9 || j == 10 || j == 13) {
            firstChar = ' ';
        }
        String output = String.format("%-3s %-3d %-4s", firstChar, j, Integer.toHexString(j));

        if (counter == usernumber) {
            System.out.println(output);
            counter = 0;
        }else{
            System.out.print(output);
        }
    }

此外,计数器设置在错误的位置存在问题 - 您可以尝试将其更改为模数。

于 2013-02-01T15:36:32.000 回答