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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 威威是超人 中级黑马   /  2016-9-16 23:06  /  965 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package an.itcast_work;

import java.util.Scanner;

public class TestDemo3 {
        public static void main(String[] args) {
                Scanner sc=new Scanner(System.in);
                StringBuffer [] sbb=new StringBuffer[5];
               
                Student st=new Student();
                st.setName(sc.next());
                st.setAge(sc.nextInt());
                sbb[1].append(st.getName()).append(" ").append(st.getAge());
//                Exception in thread "main" java.lang.NullPointerException
//                at an.itcast_work.TestDemo3.main(TestDemo3.java:13)
                System.out.println("***************");
               
                Student st1=new Student();
                st1.setName(sc.next());
                st1.setAge(sc.nextInt());
                sbb[1].append(st1.getName()).append(" ").append(st1.getAge());
                System.out.println("***************");
               
                Student st2=new Student();
                st2.setName(sc.next());
                st2.setAge(sc.nextInt());
                sbb[2].append(st2.getName()).append(" ").append(st2.getAge());
                System.out.println("***************");
               
                Student st3=new Student();
                st3.setName(sc.next());
                st3.setAge(sc.nextInt());
                sbb[3].append(st3.getName()).append(" ").append(st3.getAge());
                System.out.println("***************");
               
                Student st4=new Student();
                st4.setName(sc.next());
                st4.setAge(sc.nextInt());
                sbb[4].append(st4.getName()).append(" ").append(st4.getAge());
                System.out.println("***************");
               
                for (int i = 0; i <sbb.length; i++) {
                        System.out.println(sbb[i].toString());
                }
        }

}


11 个回复

正序浏览
加点点注释还有心思看,看着就绝望了 st.setName(sc.next());st.setAge(sc.nextInt());
突然想到一个问题:next遇到上一个学生对象的nextInt的/r/n就结束?还是说这样nextLine()才会有这种情况
回复 使用道具 举报
CreScert 发表于 2016-9-18 20:52
就是啊,刚开始的StringBuffer的对象数组只是申请了空间,你拼接自然报空指针啊。建议在有问题的代码中自己 ...

嗯呢,知道啦,,谢谢你的提议,我会努力嘚
回复 使用道具 举报
18088086590 发表于 2016-9-18 00:19
楼主的代码写的辣眼睛,已经没有欲望看了,\\\

初学者谅解哈{:2_32:}
回复 使用道具 举报
就是啊,刚开始的StringBuffer的对象数组只是申请了空间,你拼接自然报空指针啊。建议在有问题的代码中自己多改改,这样自己能够得到更多知识
回复 使用道具 举报
进啦看了看, 发现我并不能看懂...
回复 使用道具 举报
楼主的代码写的辣眼睛,已经没有欲望看了,\\\
回复 使用道具 举报
dedong 发表于 2016-9-17 13:26
StringBuffer [] 里都是null,你使用sbb[1]调用append方法是。sbb[1]为null。当然报空指针异常。。。你需要 ...

恩,明白了,其实我的要求就是往数组里放五个学生对象。
回复 使用道具 举报
liuyuan_8023 发表于 2016-9-17 12:33
起码错误异常粘贴出来啊,直接一堆代码,谁有那耐心。。。

抱歉,对不起{:2_39:}
回复 使用道具 举报
StringBuffer [] sbb=new StringBuffer[5];这么声明只是声明了一个StringBuffer的对象数组,但是你没往其中存入StringBuffer对象,可以理解为你向内存申请了能装5个StringBuffer对象的内存,但是你这么写只是说明了这快内存是用来装StringBuffer对象,没有实际向其中存入StringBuffer对象,在下面加入下面的代码就好了

for(int i=0;i<5;i++){
ssb[i]=new StringBuffer();
}
回复 使用道具 举报
StringBuffer [] 里都是null,你使用sbb[1]调用append方法是。sbb[1]为null。当然报空指针异常。。。你需要先往数组里添加五个StringBuffer实例
回复 使用道具 举报
起码错误异常粘贴出来啊,直接一堆代码,谁有那耐心。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马