如果没有特定类别,则应仅打印“未找到类别”

时间:2016-07-06 22:01:20

标签: java

public static String getLeastPriceToy(Toy one, Toy two, Toy three, Toy four,
        String category) {
    Toy ansToy = one;
    if(!one.getCategory().equals(category)&& !two.getCategory().equals(category)&&
        !three.getCategory().equals(category)&&!four.getCategory().equals(category)){
        System.out.println("no category found");
    }
    else{
    if(two.getCategory().equals(category) && (two.getPrice()*two.getDiscount())<(ansToy.getPrice()*ansToy.getDiscount())){
        ansToy =two;
    }
    if(three.getCategory().equals(category) && (three.getPrice()*three.getDiscount())<(ansToy.getPrice()*ansToy.getDiscount())){
        ansToy =three;

    }
    if(four.getCategory().equals(category) && (four.getPrice()*four.getDiscount())<(ansToy.getPrice()*ansToy.getDiscount())){
        ansToy =four;
    }
    }   
return ansToy.getName();

这应该仅返回&#34;没有找到类别&#34;但香蕉是第一个字符串返回。我怎样才能消除这个:

enter image description here

5 个答案:

答案 0 :(得分:2)

假设您正在打印getLeastPriceToy()的结果,只需替换

System.out.println("no category found");

return "no category found";

答案 1 :(得分:1)

如果将System.out.println("no category found");替换为return "no category found";,则应获得所需的行为。 现在你打印&#34; Banana&#34;因为你总是 return ansToy.getName();

答案 2 :(得分:0)

您要返回的代码中没有地方&#34;找不到类别&#34;

你已经打印过.... system.out.println(&#34;找不到类别&#34;

但实际上你需要添加一行:

返回(&#34;未找到类别&#34;);

话虽如此,返回null而不是字符串可能更有用。

答案 3 :(得分:0)

此处已给出简短回答:将dict[tax_file][splitLine[1]] = splitLine[0] 替换为System.out.println("no category found");

此外,此代码存在多个问题,可以通过重新设计来缓解这些问题:

  • 要仅使用一个,两个或三个参数调用方法,您需要创建一个始终具有不存在的类别的“FakeToy”(您的方法不会检查null,因此请替换其中一个参数null导致NullPointerException)
  • 你无法比较五种玩具。

此版本处理您的要求,但没有此限制:

return "no category found";

这将适用于任意数量的玩具,之后不会进行任何代码修改,并且比原始版本更短。

答案 4 :(得分:0)

主要方法 我检查了类别是否匹配  如果匹配调用方法  否则“找不到类别”

这个逻辑帮助了我...... !!! 所有人都回答了我的问题。