当前位置: 首页 > 面试题库 >

有没有办法使JScience以更“人性化”的格式输出?

谭铭
2023-03-14
问题内容

当我对JScience Amount对象使用toString()时,会得到如下结果:

(7.5 ± 4.4E-16) mph

这并不可怕,但我真的希望它输出类似以下内容的内容:

7.5 miles per hour

是否有捷径可寻?

编辑: 为了明确起见,我希望找到一种解决方案,该解决方案适用于具有任何类型单位(或至少所有预定义单位)的任何金额,而不仅仅是“ mph”。


问题答案:

尽管它会丢弃错误和单位,但是您可以执行以下操作:

Amount<Velocity> x = Amount.valueOf(7.5, NonSI.MILES_PER_HOUR);
System.out.println(x);
System.out.println(
    x.doubleValue(NonSI.MILES_PER_HOUR) + " miles per hour");

安慰:

(7.5±4.4E-16)英里/小时
每小时7.5英里

附录: 我希望有一个能以任何单位使用任何数量的解决方案。

您仍然必须提供自己的标签来替换默认标签UnitFormat;标签字符受限制isValidIdentifier()。您也可以AmountFormat按照@RogerLindsjö的建议替换自己的。本示例打印估计值的任意有效位数和标签的有效变体。另请参阅TypeFormat

final UnitFormat uf = UnitFormat.getInstance();
uf.label(NonSI.MILES_PER_HOUR, "miles_per_hour");
AmountFormat.setInstance(new AmountFormat() {

    @Override
    public Appendable format(Amount<?> m, Appendable a) throws IOException {
        TypeFormat.format(m.getEstimatedValue(), -1, false, false, a);
        a.append(" ");
        return uf.format(m.getUnit(), a);
    }

    @Override
    public Amount<?> parse(CharSequence csq, Cursor c) throws IllegalArgumentException {
        throw new UnsupportedOperationException("Parsing not supported.");
    }
});
Amount<Velocity> x = Amount.valueOf(7.5, NonSI.MILES_PER_HOUR);
System.out.println(x);

安慰:

7.5英里/小时


 类似资料:
  • 问题内容: 当然,在Java中。我正在编写程序并在Windows环境下运行它,但是我需要以Unix格式完成输出(.csv)。任何简单的解决方案?谢谢! 问题答案: 注意:如评论中所述,下面给出的方法在JDK 9+中是无效的。 使用James H.的答案中的方法。 “ Unix格式”是指使用“ \ n”作为行终止符而不是“ \ r \ n”吗?在创建PrintWriter之前,只需设置系统属性即可。

  • 问题内容: 我今天才刚刚开始学习GoLang,我正在尝试构建一个简单的Rest API Web服务器。 这是我希望将每个请求发送到Web服务器的响应结构: 这是我的 articles.go 文件,该文件具有获取数据库中所有文章的功能: 我在这里面临的问题是响应是这样的: {“状态”:200,“描述”:“”,“正文”:“ [{\” id \“:\” 1 \“,\”标题\“:\”第一\“,\”正文\“

  • 问题内容: 请考虑以下表格: 部 员工 编写查询以返回人员总数为4或更多的那些部门的雇员的empname和deptname列。记录应按姓氏的字母顺序返回 这是我的看法: 您将如何对此进行改进? 问题答案: 这比较短,而且执行速度可能也更快 从分组开始。您不需要内部查询中的COUNT。然后,联接两个表只是为了获得名称。 *之所以使用 *INNER JOIN, 是因为一旦计数完成,我们已经知道 员工存

  • 问题内容: 我正在使用网页上的HTML5元素。默认情况下,输入将日期显示为。 现在的问题是,是否有可能它的格式更改为类似:? 问题答案: 无法更改格式 我们必须区分有线格式和浏览器的演示格式。 Wire format 所述HTML5日期输入规范是指RFC3339规范,它指定一个全日期格式等于:。有关更多详细信息,请参见RFC3339规范的5.6节。 HTML属性和DOM属性使用此格式,并且是进行普

  • 更新: 谢谢所有的帮助。我将总结一下答案。 从@Jayde开始,他的回答成功地将结果减少到0.09秒,并且与限制中的数字成线性关系。 选择*from(选择table1.id作为table1\u id,从table1中选择table1.id 在@Rick James中,他提到这可能是表2的问题。因为我的表2只有几列,所以我可以省略它,自己进行连接,即使是在客户端! 所以我去掉了表2,它只有0.02s