【问题标题】:Horizontal Alignment of two tables in JavaJava中两个表的水平对齐
【发布时间】:2020-07-03 00:57:09
【问题描述】:

我需要打印出以下输出:

J   R   F   M   O   M   A   Z   S    1  7  8  6  2  7  3  9  8  1
B   C   X   Y   P   C   S   T   P    1  3  4  6  8  7  2  9  2  3
G   D   C   G   D   B   F   R   T    4  6  7  8  3  1  1  3  0  3 
K   R   Q   L   B   U   A   M   A    3  6  3  1  2  3  1  2  3  1 
X   P   D   T   F   X   T   C   Z    4  3  7  9  0  6  2  6  7  8 
Q   K   G   X   W   E   R   J   V    6  1  3  5  7  6  7  8  9  9     
Q   C   P   D   G   U   L   J   X    1  6  3  1  2  3  1  2  3  1 
Z   J   N   S   V   S   F   H   G    6  3  7  9  0  6  2  6  7  8
P   T   C   D   H   H   R   G   W    9  3  7  9  0  6  2  6  7  8
M   T   P   B   N   E   S   D   Y    0  3  7  9  0  6  2  6  7  8

所以使用 Math.random 方法我可以生成随机数字和随机字母......但我不能以上面示例中的方式对齐它们。 这是我的代码:

public class AlignmentOfRandCharacters {

    static char getRandomChar() {
        char ch = (char) ('A' + (Math.random() * ('Z' - 'A' + 1)));

        return ch;
    }

    static char getRandomDig() {
        char ch = (char) ('0' + (Math.random() * ('9' - '0' + 1)));

        return ch;

    }

    public static void main(String[] args) {
        for (int i = 0; i <= 100; i++) {

            if (i % 10 != 0) {
                System.out.print(getRandomChar() + "  " + getRandomDig());
            } else {
                System.out.println();
            }

        }
    }

}

这是输出:


J  5E  6J  5J  2R  3N  5Q  5F  8S  3
G  8E  2G  3Q  4V  4I  4I  1Q  1M  3
B  3E  0I  9V  2V  7K  5A  1G  9D  1
N  8S  5R  6U  7U  7E  7G  9G  1S  5
Y  7R  0A  3H  3M  3X  1N  1U  3M  9
T  8Y  0Q  5Q  3C  5H  6V  5R  3R  1
D  0D  8X  6E  4N  8Q  4R  9Y  9J  2
N  8X  0P  8J  7K  9J  3G  9S  9B  0
P  2M  5W  5C  0K  1N  2T  5E  1R  8
E  4C  7E  8E  7T  5A  5S  1B  4P  3

我绝对确定答案在表面上,但我看不到。 感谢您的帮助

【问题讨论】:

  • 在数字后加一个空格。
  • 您现在可以考虑accepting an answer 或发表评论以获取详细信息;)以奖励那些为您花费时间的人;)

标签: java for-loop alignment


【解决方案1】:

您可以在每 10 次迭代中存储数字,当您完成 10 个字母后,打印数字,然后再继续

StringBuilder digits = new StringBuilder();
for (int i = 0; i <= 100; i++) {
    if (i % 10 != 0) {
        System.out.print(getRandomChar() + "  ");
        digits.append(getRandomDig()).append("  ");
    } else {
        System.out.println(digits); // PRINT DIGITS
        digits = new StringBuilder();
    }
}

PRINT DIGITS 行,如果您希望 2 个 矩阵

之间有一个空格,请使用 System.out.println(" " + digits.toString());

【讨论】:

  • 非常感谢...我有一个问题,为什么你需要digits.toString()?即使 toString() 发出,代码也能正常工作
  • @vm_1_r 你是什么意思?这将打印所有存储在 StringBuilder 中的内容
  • 尝试删除 toString() 没有任何变化
  • @vm_1_r , StringBuilder 的默认 toString 打印它的值,所以在 System.out.println 它没用是的,可以吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-02
  • 2014-02-23
  • 2020-12-20
  • 2020-10-17
  • 1970-01-01
相关资源
最近更新 更多