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

为什么我的打印成功添加学生为null,没有报错

package com.imooc.collection;import java.util.HashMap;import java.util.Map;import java.util.Scanner;import java.util.Set;public class TestMap {/* * 用来承装学生类型对象 */	public Map<String,student> students;/* * 在构造器初始化student属性	 */	public TestMap(){		this.students=new HashMap<String,student>();	}/* * 测试添加:输入学生ID判断是否被占用 * 若未被占用,则输入姓名,创建学生对象,并且添加到student中	 */	public void testPut() {		//创建Scanner对象,用来获取输入的学生信息		Scanner inpu=new Scanner(System.in);		int i=0;		while(i<3) {			System.out.println("请输入学生ID:");			String ID=inpu.next();			//判断ID是否被占用			student st=students.get(ID);			if(st==null) {				//提示输入学生姓名				System.out.println("请输入学生姓名:");				String name=inpu.next();				//创建新的学生对象				student newStudent=new student(ID,name);				//通过调用students的put方法,添加ID-学生映射				students.put(ID, newStudent);				System.out.println("成功添加学生:"+students.get(ID).name);				i++;			}			else {				System.out.println("该学生ID已被占用!");				continue;			}		}	}	/*	* 测试Map的KeySet方法	*/	public void testKeySet() {		//通过KeySet方法,返回Map中的所有“键”的Set集合		Set<String> keySet=students.keySet();		//取得学生的数量		System.out.println("共有:"+students.size()+"个学生");		//遍历keySet,取得每一个键,在调用get方法取得每个键对应的value		for(String stuId:keySet)		{			student st=students.get(stuId);			if(st!=null)				System.out.println("学生:"+st.name);		}	}	public static void main(String[] args) {		// TODO 自动生成的方法存根		TestMap tm=new TestMap();		tm.testPut();		tm.testKeySet();	}}

http://img1.sycdn.imooc.com//5f38c2b10001e6d619201075.jpg

正在回答

2 回答

我和你一样 也是没有报错 但输出的姓名是null  你现在解决了嘛

0 回复 有任何疑惑可以回复我~
package com.imooc.collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class TestMap {
/* 
* 用来承装学生类型对象
 */	
 public Map<String,student> students;
 /* 
 * 在构造器初始化student属性	
  */
  	public TestMap(){	
  		this.students=new HashMap<String,student>();	
  		}
  		/*
  		 * 测试添加:输入学生ID判断是否被占用 * 若未被占用,则输入姓名,创建学生对象,并且添加到student中
  		 */	
  		 public void testPut() 
  		 {
  		//创建Scanner对象,用来获取输入的学生信息
  	Scanner inpu=new Scanner(System.in);	
  	int i=0;
  while(i<3) {	
  System.out.println("请输入学生ID:");	
 String ID=inpu.next();	
 //判断ID是否被占用	
 student st=students.get(ID);
 if(st==null) {	
 //提示输入学生姓名		
System.out.println("请输入学生姓名:");	
String name=inpu.next();		
//创建新的学生对象		
student newStudent=new student(ID,name);				
//通过调用students的put方法,添加ID-学生映射				
students.put(ID, newStudent);				
System.out.println("成功添加学生:"+students.get(ID).name);				
i++;		
	}			
	else {				
	System.out.println("该学生ID已被占用!");				
	continue;			
	}		
	}	
	}	
	/*	
	* 测试Map的KeySet方法	
	*/	
	public void testKeySet() 
	{		
	//通过KeySet方法,返回Map中的所有“键”的Set集合		
	Set<String> keySet=students.keySet();		
	//取得学生的数量		
	System.out.println("共有:"+students.size()+"个学生");		
	//遍历keySet,取得每一个键,在调用get方法取得每个键对应的value		
	for(String stuId:keySet)		
	{			
	student st=students.get(stuId);			
	if(st!=null)				
	System.out.println("学生:"+st.name);		
	}	
	}	
	public static void main(String[] args) {		
	// TODO 自动生成的方法存根		
	TestMap tm=new TestMap();		
	tm.testPut();		
	tm.testKeySet();	
	}
	}

没有报错!知怎么回事!


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

weixin_慕运维6432950

String name=inpu.next(); 把这个name换个其他就行了 System.out.println("成功添加学生:"+students.get(ID).name); 你get的是上面的name的常量但是他的类型是student所以为空
2022-01-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我的打印成功添加学生为null,没有报错

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