【发布时间】:2016-04-23 04:04:22
【问题描述】:
我正在尝试以 16 行显示一个 ascii 表,左侧的一列从 32 开始到 240 结束。问题是我无法让表超出第一个 16 个字符,它只是不断重复同一行。这是代码。 公共静态无效主要(字符串[]参数){ 整数计数器 = 0;
for (int i = 32; i <= 255; i = i + 16) {
if(i < 112)
System.out.print(" ");
System.out.print(i + " " );
for (int j = 32; j <= 47; j++) {
counter++;
System.out.print((char)j );
if(counter % 16 == 0)
System.out.print((char)j );
else
System.out.print((char)j + " ");
}
System.out.println();
这是输出。
32 !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. //
48 !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. //
64 !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. //
80 !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. //
96 !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. //
112 !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. //
128 !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. //
144 !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. //
160 !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. //
176 !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. //
192 !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. //
208 !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. //
224 !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. //
240 !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. //
enter code here
【问题讨论】:
-
不应该 j 随 i 的值而变化吗?类似
for (int j = i; j <= i+15; j++) -
您的代码更改有效,但每个字符都加倍。
-
在
counter++;之后的评论行System.out.print((char) j);可能会有所帮助,因为它总是会打印出来。 -
你说得对,我把它放在那里试图找出为什么代码不起作用忘记删除它。无论如何,非常感谢您的帮助!
-
这不是 ASCII 字符集,它只有 128 个代码点。 Java 的
char是一个 Unicode/UTF-16 代码单元。在您使用的范围内,对应的 Unicode 代码点只需要一个 UTF-16 代码单元,因此您的使用似乎没问题。顺便说一句——你可以通过打印control pictures for ␀ to ␟来获得乐趣。
标签: java