3

したがって、128 の可能な ASCII コード、それらの 16 進値、および 10 進値をすべて出力しようとしているこの Java コードを取得しました。ここに私が今持っているコードがあります。

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 ");
            }
    }
}

私はこれを達成しようとしています:

望ましい出力

ただし、コンソール出力が正しくフォーマットされておらず、 [こちら] で確認できるように、テーブルがひどく誤解されています。

電流出力

私が間違っていることについて何か助けやアイデアはありますか? 私のコードでは、コンソールなどで正しく出力できないサウンドやその他の文字にいくつかの番号が割り当てられているために空白のままになっているスペースを補おうとしました。

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 に答える