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

在写containsValue()方法时,我只要写了else,就回立马报错,该怎么弄?

代码如下

package com.immoc.collection;


import java.util.HashMap;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Scanner;

import java.util.Set;


public class MapTest {


/**

* @param args

* 用来层状

*/

public Map<String,Student> students;

//在构造

public MapTest(){

this.students=new HashMap<String,Student>();

}

//测试添加:输入学生ID,判断是否被占用

//

public void testPut(){

Scanner console=new Scanner(System.in);

int i=0;

while(i<3){

System.out.println("请输入学生ID:");

String ID=console.next();

Student st=students.get(ID);//I键D作为,value值为student。

if(st==null){

//提示输入学生姓名

System.out.println("请输入学生姓名:");

String name=console.next();

//创建学生对象

Student newStudent=new Student(ID,name);

//通过调用student的put方法tem

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();

//取得students的容量

System.out.println("总共有:"+students.size()+"个学生!");

//遍历KeySet,取得每一个键

for(String stuID:keySet){

Student st=students.get(stuID);

if(st!=null)

System.out.println("学生:"+st.name);//[][]

}

}

/*

*/

public void testRemove(){

System.out.println("请输入要删除的学生的ID!");

//从键盘上输入待删除的学生ID字符串

Scanner console=new Scanner(System.in);

while(true){

System.out.println("请输入要删除的学生的ID!");

String ID=console.next();

//判断ID是否有对应的学生对象 st

Student st=students.get(ID);

if(st==null){

//

System.out.println("该ID不存在!");

continue;

}

students.remove(ID);

System.out.println("成功删除学生:"+st.name);

break;

}

}

/*

*/

public void testEntrySet(){

Set<Entry<String,Student>> entrySet=students.entrySet();

for(Entry<String,Student> entry:entrySet){

System.out.println("取得键:"+entry.getKey());

System.out.println("对应的值为:"+entry.getValue().name);//[][]

}

}

public void testMoDify(){

System.out.println("请输入要修改的学生ID:");

//

Scanner console=new Scanner(System.in);

while(true){

String stuID=console.next();

Student student=students.get(stuID);

if(student==null){

System.out.println("该ID不存在!请重新输入!");

continue;

}

//提示当前

System.out.println("当前该学生ID,所对应的学生为:"+student.name);

//提示新学生姓名的

System.out.println("请输入新的学生姓名:");

String name=console.next();

Student newStudent=new Student(stuID, name);

students.put(stuID,newStudent);

System.out.println("修改成功!");

break;

}

}

/*

* 测试Map中,

*/

public void testContainsKeyOrValue(){

//提示用户输入id

System.out.println("请输入要查询的学生的ID:");

Scanner console=new Scanner(System.in);

String id=console.next();

//

System.out.println("您输入的学生ID为:"+id+",在学生映射表中是否存在:"

+students.containsKey(id));

if(students.containsKey(id))

System.out.println("对应的学生为:"+students.get(id).name);

//

System.out.println("请输入要查询的学生姓名:");

String name=console.next();

 if(students.containsValue(new Student(null,name)));

  System.out.println("在学生映射表中,却是包含学生:"+name);

  else

  System.out.println("在学生映射表中不存在该学生!");

 

}

public static void main(String[] args) {

// TODO Auto-generated metho stub


MapTest mt=new MapTest();

mt.testPut();

mt.testKeySet();

//mt.testRemove();

//mt.testEntrySet();

// mt.testMoDify();

// mt.testEntrySet();

mt.testContainsKeyOrValue();

}


}

图片如下

http://img1.sycdn.imooc.com//577b3e670001556c07960558.jpg

正在回答

1 回答

 if(students.containsValue(new Student(null,name)));

去掉后面的分号!

分号表示代码的结束,这里添加了分号,系统会认为if语句已经结束,所以else会报错!


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

邓一格

谢谢,我也是这样
2017-10-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

在写containsValue()方法时,我只要写了else,就回立马报错,该怎么弄?

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