//登录模块
public boolean todo(String name, String password,Map<Integer,User> map) {
boolean b = false;
Iterator a = map.keySet().iterator();
while (a.hasNext()) {
User c = (User) a.next();
if (name.equals(c.getName()) && password.equals(c.getPsd())) {
b = true;
break;
}
}
return b;
}
//User 对象
public class User {
private String name;
private String psd;
private StringBuffer phone;
private Double price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPsd() {
return psd;
}
public void setPsd(String psd) {
this.psd = psd;
}
public StringBuffer getPhone() {
return phone;
}
public void setPhone(StringBuffer phone) {
this.phone = phone;
}
public double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public User(String name, String psd, StringBuffer phone, Double price) {
super();
this.name = name;
this.psd = psd;
this.phone = phone;
this.price = price;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "User [姓名=" + name + ", 密码=" + psd + ", 手机号=" + phone + ", 余额=" + price + "]";
}
}
//调用以上代码
if(ur.size()==0){
User user2 = new User("123","123",null,(double) 0);
ur.put(0, user2);
}
System.out.println("请输入姓名:");
String name=input.next();
System.out.println("请输入密码:");
String password=input.next();
doLogin doLogin = new doLogin();
if(doLogin.todo(name, password, ur)){
System.out.println("登录成功");
}
break;
封装好的User 即使将price 改成包装类 依然报这个错误
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to com.kgc.User
Integer不能转换成user对象,错误很明显啊,你的,Map<Integer,User> map 制定泛型key为Integer,但是你遍历时Iterator a = map.keySet().iterator();取了所有的键,还把它强转成user,
直接取值就好了:
Iterator a = map.values().iterator();
Integer不能转换成user对象,错误很明显啊,你的,Map<Integer,User> map 制定泛型key为Integer,但是你遍历时Iterator a = map.keySet().iterator();取了所有的键(键为Integer),还把它强转成user,
ur.put(0, user2);
你的ur Map对象是怎么定义的
Iterator a = map.keySet().iterator();
while (a.hasNext()) {
User c = (User) a.next();
if (name.equals(c.getName()) && password.equals(c.getPsd())) {
b = true;
break;
}
}
====================================================================
改成
for(User user : map.values){
if (name.equals(c.getName()) && password.equals(c.getPsd())) {
b = true;
break;
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632