求解,下面这段程序我标出来的地方怎么会有空指针异常
package com.java.day13;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeMap;
public class Practice2 {
public static void main(String[] args) {
TreeMap a = new TreeMap(new Comparator() {
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof students && o2 instanceof students) {
students p1 = (students)o1;
students p2 = (students)o2; |-------------------------|
int i = (p1.getNumber().compareTo(p2.getNumber())); ----------> |这里总是报空指针异常 |
if(i != 0) { |------------------------|
return i;
}else {
i = p1.getName().compareTo(p2.getName());
if(i != 0) {
return i;
}
}
}
return 0;
}
});
a.put(new students("King"), 100);
a.put(new students("Kin"), 90);
a.put(new students("Ki"), 80);
a.put(new students("K"), 70);
Set s = a.entrySet();
for(Object o:s) {
System.out.println();
}
}
}
class students{
private String name;
private Integer number;
public students(String students) {
this.name= students;
}
public students(String name, Integer number) {
super();
this.name = name;
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((number == null) ? 0 : number.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
students other = (students) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (number == null) {
if (other.number != null)
return false;
} else if (!number.equals(other.number))
return false;
return true;
}
@Override
public String toString() {
return "students [name=" + name + ", number=" + number + "]";
}
}
最佳答案
你把public students(String students) {
this.name= students;
}
这段代码删除
public students(String name, Integer number) {
super();
this.name = name;
this.number = number;
}
中的super();这句删除,
students p1 = (students)o1;
students p2 = (students)o2;
修改成:
students p1 = (students)o1("lili",25);
students p2 = (students)o2("wuwu",27);
看一看有没有问题?
其他回答
其它网友回答:
没给Students对象赋值,
其它网友回答:
Students student = new Students( XXX , XXX );