A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

刚刚逛论坛看到一帖子,说是打印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
谁能告诉我我这个问题到底是什么啊?我哪里写错了啊?为什么会出现这种问题啊?

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

3 个回复

倒序浏览
图片补充下,论坛中怎么插入图片还不太会,正在摸索中,所以以附件形式添加的,烦劳大家了!

w.jpg (41.48 KB, 下载次数: 3)

w.jpg
回复 使用道具 举报
这个简单,角标越界! 数组的角标是从0开始的,第一个元素所对应的角标是0,而你的代码?应该是这个吧
   for(int i =32; i <=126; i++)
                 {  b[i] = (char)i+"";
                 .......................................................
是这样的话角标就从32开始存对应的值,后面的值肯定就装不下
而前面从0开始到31都是默认的null值,所以你得改循环条件或者对应的角标条件(b【i-32】这样就行了)
下次记得代码复制全了

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
  1. class  Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 char []b = new char[95];
  6.                 int count = 0;
  7.                 for(int i =32; i <=126; i++)
  8.                 {
  9.                         b[count] = (char)i;
  10.                         if ((i-32)%8==0)
  11.                                 System.out.println();
  12.                         if(i<100)
  13.                         {
  14.                                 System.out.print("0"+b[count]+"===="+i+",");
  15.                         }
  16.                         else
  17.                         {
  18.                                 System.out.print(b[count]+"===="+i+",");
  19.                         }
  20.                        
  21.                         count++;
  22.                                
  23.                  }
  24.                
  25.         }
  26. }
复制代码



我直接复制你代码!~然后修改的!!你的Exception提示你是数组角标越界!!可能你做得太快了~感觉不少细节方面都有问题~因为我隔了很长一段时间没碰code的了~所以只能给这些建议先!我的代码你可以看看~我自己实验过的

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马