当前位置: 首页 > 知识库问答 >
问题:

删除“可选[...]"用Java / IntelliJ [duplicate]从控制台输出

申奇希
2023-03-14

我在学习编程,我在研究Java中的流。我写了一个方法,可以从医生和病人名单中找出最高的人体物体。

public static void tallestPatient(List<Human> patients) throws NullPointerException {
    try {
        System.out.println("Tallest patient: ");
        System.out.print(patients.stream().max(Comparator.comparingInt(Human::getHeight)));
        System.out.println();
    } catch (NullPointerException e) {
        e.printStackTrace();
    }
}

该方法本身也可以工作。我刚刚注意到,每当我试图打印出choosen对象(最高的人)的toString()方法时,控制台上都有一个“可选[…]”标记。

控制台-输出:

最高的病人:可选的【彼得是一个有私人保险的美国人,大约220厘米高。]

IDE告诉我,那是因为如果是空列表,元素可能为零。试图通过考虑NullPointerExceptions以及if和else条件来消除这一点,这也没有解决问题,为什么仍然使用异常变体。

有没有人有想法,我可以解决什么?

问候贾斯汀

共有1个答案

柯河
2023-03-14

聚合函数< code>Stream::max返回一个< code>Optional,而< code>Optional的< code > toString -实现产生我们观察到的< code >字符串

我们可以通过解开< code>Optional来防止这种情况。一种可能的方法是调用< code>Optional::orElse:

System.out.print(patients.stream()
  .max(Comparator.comparingInt(Human::getHeight))
  .orElse(null));

另一种可能性是,如果值通过可选::ifPresent显示,则仅打印

patients.stream()
  .max(Comparator.comparingInt(Human::getHeight))
  .ifPresent(System.out::println)

对代码的评论:捕获NullPointerException的决定至少是有问题的。我建议显式强制非nullity。

 类似资料:
  • 如何从播放控制台删除应用程序?有没有办法删除被拒绝的应用程序从谷歌播放开发者控制台?我们如何从Play控制台永久删除草稿应用程序或游戏。

  • 控制台-部门-删除 接口URL {youke-url}/console/Index.php?c=department&a=delete&timestamp=1607677497&access_key=abc&sign=abea261d1d33b1ec347801e4cce7fc1f73b5a8cc 请求方式 POST Content-Type form-data 请求Body参数 参数 示例值 是

  • 控制台-观众-删除 接口URL {youke-url}/console/Index.php?c=audience&a=delete&timestamp=1607677497&access_key=abc&sign=8584a009d9ca9cca94e0331a7960d7ebee2dd0a7 请求方式 POST Content-Type form-data 请求Body参数 参数 示例值 是否必

  • 控制台-频道-删除 接口URL {youke-url}/console/Index.php?c=live&a=delete&timestamp=1607677497&access_key=abc&sign=3943c8f8f4c65ba7affc55bc7201b4f49996819b 请求方式 POST Content-Type form-data 请求Body参数 参数 示例值 是否必填 参数

  • 我已经搜索了很多地方,但是没有找到有效的。。。一定有办法!!!所以,我需要的是一个代码,它在Eclipse中清除控制台(使其为空)。不,不要打印50行空白,清除它! 我发现了这个: 但它给了我一个错误:“类型控制台的clear()方法未定义”

  • 到目前为止我试过: 和: 但这些都奏效了。