java - 我怎样才能翻转这种模式倒计时模式?
问题描述
我正在尝试创建一个倒计时模式,要求用户输入一个数字并打印一个金字塔逐行倒数到该数字。因此,如果用户输入 5,则输出应该如下所示:
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
到目前为止,我知道计算我的代码应该是这样的:
Scanner scnr = new Scanner(System.in);
int n;
int j;
int temp = 0;
System.out.println("Please enter a number 1...9 :");
n = scnr.nextInt();
for (int i = 0; i <= n; i++) {
for(j = 1; j <= i; ++j) {
System.out.print(j + " ");
}
System.out.println("");
}
这会打印出这个:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
但是我怎样才能让它在左侧数到 5?
解决方案
下面是解决方案Streams
,对于您的方法可能会很复杂for-loop
。但是您也可以对其进行转换:
- 首先迭代给定
n
值 - 然后为子范围的每一行创建字符串(映射
int
到String
,并加入它们) - 之后,您添加额外的空格
String.format
- 最后打印出来
int n = 5;
String format = "%" + (n * 2) + "s";
IntStream.rangeClosed(1, n)
.mapToObj(i -> IntStream.range(0, i)
.mapToObj(j -> i - j )
.map(String::valueOf)
.collect(Collectors.joining( " "))
)
.map(s -> String.format(format,s))
.forEach(System.out::println);
推荐阅读
- webpack - 从无服务器的 Webpack 中排除节点模块
- python-3.x - 迭代 group_by 函数以删除重复数据
- java - Android mediaPlayer setDataSource 失败,给出 IOException
- html - Laravel - Webpack - 生成静态 HTML 文件
- python-3.x - 如何在python的列表中间添加字符串
- powershell - 为什么新 ADuser 不复制组成员身份?
- javascript - MatStepper 如何触发一个步骤的错误状态?
- php - 如何使用 PHP 将新对象推送到 JSON 文件中
- java - 编译 Android 应用程序时第 3 方库依赖项上的 NoClassDefFoundError
- ios - 如何在 ios 模拟器中禁用 ip https 验证?