请问这个输出为什么不是1,2,3,而是1,1,1,自己写来熟悉知识的,但是出了这样的问题是为什么?

请问这个输出为什么不是1,2,3,而是1,1,1,自己写来熟悉知识的,但是出了这样的问题是为什么?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

你好!试了一下你的代码输出效果是1,2,3,以下是代码和运行效果截图,同学下次一定要贴代码,而不是截图,不然还要一行行的敲,而且容易和你的代码不一致。建议你把下面的代码复制到eclipse中再试试。祝学习愉快!

package com.test;
public class Jvti extends shixian{
}
package com.test;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Jvti jvti=new Jvti();
Person he=new Person("he");
Person shan=new Person("shan");
Person bing=new Person("bing");
jvti.addVertex(he);
System.out.println(jvti.getVertices().size());
jvti.addVertex(shan);
System.out.println(jvti.getVertices().size());
jvti.addVertex(bing);
System.out.println(jvti.getVertices().size());
}
}


package com.test;
public class Person extends Vertex{
private String sex;
private int age;
private String label;
public Person() {}
public Person(String label) {
this.label=label;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label=label;
}
}


package com.test;
abstract public class Vertex {
private String label;
public Vertex() {}
public Vertex(String label) {
this.label=label;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label=label;
}
}


package com.test;
public interface jiekou {
public boolean addVertex(Vertex v);
}


package com.test;
import java.util.HashSet;
import java.util.Set;
public class shixian implements jiekou{
private Set<Vertex> vertices=new HashSet<>();
@Override
public boolean addVertex(Vertex v) {
for(Vertex vi:vertices) {
//注意此处字符串比较用equals方法
if(vi.getLabel().equals(v.getLabel())) {
return false;
}
}
vertices.add(v);
System.out.println(v.getLabel());
return true;
}
public Set<Vertex> getVertices(){
return vertices;
}
public void setVertices(Set<Vertex> vertices) {
this.vertices=vertices;
}
}

http://img1.sycdn.imooc.com//climg/5ae44f130001aa8802640169.jpg

  • 阿冰bingo 提问者 #1
    好的,下次我一定贴代码,我以为是写错了,没在意,不过,我编译器给的答案是1,1,1,是为什么呀
    2018-04-28 20:22:16
  • 阿冰bingo 提问者 #2
    除了编译器的问题,我还想问一下,我的getVertices()是不是防御性不太好?(本来写代码就想看这个问题的)
    2018-04-28 20:35:44
  • 阿冰bingo 提问者 #3
    老师的我运行对了,(不是编译器的问题)我改了一下,发现我出错的原因是 把vertex和person放到了一个包里,把其他四个jiekou,shixian,Jvti,test放到了一个包里,于是就出现了都是1.1.1的运行结果,老师可以再帮忙看看是为什么吗?这是什么原因?
    2018-04-28 21:35:46
提问者 阿冰bingo 2018-04-28 18:04:52

我知道命名不太友好,请忽略哈~这个问题我看了很久了,为什么不是正常的数字呢?

这个图片我上传的有点乱,jiekou是带着addVertex()这个函数的一个接口,shixian是完成了接口的一个实现,Jvti是shixian的儿子,test是测试函数,然后Vertex是一个类,Person是Vertex的儿子,麻烦老师指导!这个错误我真的不知道是什么,谢谢啦!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师