首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印输出函数中的java变量消失

打印输出函数中的java变量消失
EN

Stack Overflow用户
提问于 2015-03-22 14:05:34
回答 1查看 71关注 0票数 0
代码语言:javascript
复制
public String getNOM(int i){
    String name = class_name.get(i);
    System.out.println(1+name);
    if(isHeritage(name)){
        System.out.println(3+name+ getGeneralization(name)==null);
        return Integer.toString(getGeneralization(name).getNOM());
    }
    return classes.get(i).getNOM();
}

public boolean isHeritage(String s){
    System.out.println(2+s+ getGeneralization(s)==null);
    return getGeneralization(s) != null;
}

public Generalization getGeneralization(String s){
    for(Generalization g : generalizations){
        if (g.getName().equals(s)) return g;
    }
    for(Generalization g: generalizations){
        return g.findSubClass(s);
    }
    return null;
}

public class Generalization{
   private String name;
   private List<Generalization> subClasses;

   public Generalization findSubClass(String s){        
     for(Generalization gen : subClasses){
        if(s.equals(gen.getName())) return gen;
        else gen.findSubClass(s);
     }
     return null;
   }
}

对于成功的执行,输出应该显示

1串 2布尔 3布尔

但是在我的测试中,即使我给出了一个有效的输入,输出是:

1串 错误

因此,第二打印输出中的数字2和所有第三打印输出都消失了。有人知道为什么吗?

谢谢。

PS。现在它用下面的代码正确显示,我认为问题在于我的findSubClass函数。

代码语言:javascript
复制
public boolean isHeritage(String s){
    System.out.println(2+s+ (getGeneralization(s)==null));
    return getGeneralization(s) != null;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-22 14:20:06

在计算+之前对==进行评估,这意味着您可以编写

代码语言:javascript
复制
System.out.println((2+s+ getGeneralization(s))==null);

而不是。要获得预期的结果,请编写

代码语言:javascript
复制
System.out.println(2+s+ (getGeneralization(s)==null));

但是那是不会打印的

代码语言:javascript
复制
2boolean

代码语言:javascript
复制
2Stringtrue

显然,getGeneralization(s)返回null。否则第三印就会发生。

您的findSubClass()方法似乎也不正确。(我假设您希望对子类进行深度优先搜索)。它应该是这样的:

代码语言:javascript
复制
public Generalization findSubClass(String s){        
     for(Generalization gen : subClasses){
        if(s.equals(gen.getName())) return gen;
        else {
            Generalization subGen = gen.findSubClass(s);
            if (subGen != null)
                return subGen;
        }
     }
     return null;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29195345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档