黑马程序员技术交流社区
标题:
貌似被一个小问题难住了,,,,求助!
[打印本页]
作者:
Raymond1011
时间:
2013-12-5 23:20
标题:
貌似被一个小问题难住了,,,,求助!
刚刚逛论坛看到一帖子,说是打印ASCII编码从32到126只见的字符。具体如下题。
编写一个程序,将ascll码位于32~126之间的95个可打印字符,显示在屏幕上。要求:小于100的ASCII码值之前填充一个0,每打印8个字符信息后进行换行。
貌似很简单,于是我很迅速的完成了。
class Test001
{
public static void main(String[] args)
{
String []b = new String[95];
for(int i =32; i <=126; i++)
{
b
= (char)i+"";
if ((i-32)%8==0&&i!=32)
{
System.out.println();
if(i<100)
{
System.out.printf("0"+b
);
}else
{
System.out.printf(b
);
}
}
}
}
// System.out.println(5%5);
}
具体如代码。可写完一运行,结果有错,但还不知道是什么错,如下图
C:\Users\Administrator\Desktop\w
谁能告诉我我这个问题到底是什么啊?我哪里写错了啊?为什么会出现这种问题啊?
作者:
Raymond1011
时间:
2013-12-5 23:22
图片补充下,论坛中怎么插入图片还不太会,正在摸索中,所以以附件形式添加的,烦劳大家了!
w.jpg
(41.48 KB, 下载次数: 29)
下载附件
2013-12-5 23:21 上传
作者:
然后呢
时间:
2013-12-6 00:15
这个简单,角标越界! 数组的角标是从0开始的,第一个元素所对应的角标是0,而你的代码?应该是这个吧
for(int i =32; i <=126; i++)
{ b[i] = (char)i+"";
.......................................................
是这样的话角标就从32开始存对应的值,后面的值肯定就装不下
而前面从0开始到31都是默认的null值,所以你得改循环条件或者对应的角标条件(b【i-32】这样就行了)
下次记得代码复制全了
作者:
白_蓝(八公)
时间:
2013-12-6 00:42
class Test
{
public static void main(String[] args)
{
char []b = new char[95];
int count = 0;
for(int i =32; i <=126; i++)
{
b[count] = (char)i;
if ((i-32)%8==0)
System.out.println();
if(i<100)
{
System.out.print("0"+b[count]+"===="+i+",");
}
else
{
System.out.print(b[count]+"===="+i+",");
}
count++;
}
}
}
复制代码
我直接复制你代码!~然后修改的!!你的Exception提示你是数组角标越界!!可能你做得太快了~感觉不少细节方面都有问题~因为我隔了很长一段时间没碰code的了~所以只能给这些建议先!我的代码你可以看看~我自己实验过的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2