为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的代码运行出来报了空指针!

package com.immoc.collection;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class Maptest {
    
    //用来橙装学生类型的对象
    
    
    public Map<String,Student>students;
    
        public void testMap(){
            
            this.students = new HashMap<String,Student>();
        }
             
        /**
         *
         * 测试添加:判断学生ID是否被占用
         *
         *
         *
         * @param args
         * @return
         */
        
        public void testPut(){
            //创建Scanner对象,用来获取输入的学生ID与姓名
            Scanner console = new Scanner (System.in);
            int i =0;
            while(i<3){
                System.out.println("请输入学生ID");
                String ID = console.next();
                /*判断ID是否被占用*/
                Student st=students.get(ID);
                if( st == null ){
                    System.out.println("请输学生姓名:");
                    String name = console.next();
                    //创建学生对象
                    Student newStudent = new Student (ID,name);
                    students.put(ID, newStudent);
                    System.out.println("成功添加学生:“+students。getID。name");
                    i++;    
                    
                }else{
                    System.out.println("该学生ID已被占用");
                    continue;
                    
                }
                
                
                
            }
            
            
        }
        
        public  void testKeySet(){
            //通过keyset方法,返回Map所有键的SET集合
            Set<String> keySet = students.keySet();
            //便利ketSet,取得每一个键,在调用get取得每个键对应的Value
            
            System.out.println("总共有:"+students.size()+"个学生");
            //取得学生的容量
            for(String stuId:keySet){
                
                Student st = students.get(stuId);
                if(st!=null)
                    System.out.println("学生:"+st.name);
                
            }
            
            
            
            
        }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
    
        Maptest mt = new Maptest();
        mt.testPut();
        mt.testKeySet();
        
        
        
    }

}

正在回答

5 回答

public void testMap(){
            
            this.students = new HashMap<String,Student>();
        }

把void去掉就可以了。

0 回复 有任何疑惑可以回复我~

        public void testMap(){
            
            this.students = new HashMap<String,Student>();
        }
   这里你是想写构造方法吧?

   你写的这个方法没有执行,students没有初始化。

   构造方法:

        public Maptest(){
            
            this.students = new HashMap<String,Student>();
        }

   创建Maptest时,students就会初始化。
             

0 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//55fa7ebf0001e33704920173.jpg求解一下

0 回复 有任何疑惑可以回复我~
#1

teddy_tsui

把testMap() 改成Maptest()
2015-09-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我的代码运行出来报了空指针!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信