java - 将数字总和计算为单行,输入有 3 位
问题描述
我必须计算单行中的字符串(通过扫描仪读取)的数字总和。另外,我必须确保仅在输入正好有 3 位时才计算输入。
到目前为止我得到了什么:
public class Test{
public static void main(String... args) {
System.out.print(new java.util.Scanner(System.in).nextLine().chars().mapToObj(i -> ((char)i)-'0').reduce(0, (a,b)->a+b));
}
}
但是我怎样才能证明在那一行中正好有 3 位数字呢?
解决方案
将您的代码包装在一个Optional
用于filter()
检查长度并orElse()
为错误长度输入提供输出的代码中:
System.out.print(Optional.of(new Scanner(System.in).nextLine())
.filter(str -> str.matches("\\d{3}")).map(str -> str.chars().sum() - '0' * 3)
.orElse("invalid input"));
请注意,您可以替换:
.mapToObj(i -> ((char)i)-'0').reduce(0, (a,b)->a+b)
和:
.map(i -> ((char)i)-'0').sum()
或者,因为您正好有 3 位数字,所以只需:
.sum() - '0' * 3
推荐阅读
- python - Python 不解码 JSON,因为“编码”是一个意外的参数
- c# - Unity中如何实现浏览器保存
- python - Django:使收藏夹可以从主视图访问。尝试在首页过滤用户喜欢的帖子
- firebase - Firebase 功能:可调用请求验证通过
- python - Python Selenium ZALANDO BOT
- .net - 与 IrfanView 相同大小的图像相比,我调整大小(放大)的图像质量、大小和模糊
- php - 在 PHP 的 Doctrine ORM 中映射复杂的层次结构可以写入数据但不能读回数据
- python - 在重新创建循环中关闭窗口后 Matplotlib 图 key_event 连接
- string - 从 PowerShell 中的用户帐户中提取电子邮件地址
- html - 制作翻转卡片 HTML CSS