java - 如何为数组索引中的每个数字显示 XXX|XXX?- 爪哇
问题描述
所以我有 NIM 游戏程序。基本上,有四堆,两个玩家必须不断地从堆中取石子,直到其中一个输掉。现在我的桩在输出中看起来像这样。
板:[1、2、3、4]
但我需要修改它,让它看起来像这样
XXX|XXX
XXX|XXX XXX|XXX
XXX|XXX XXX|XXX XXX|XXX
XXX|XXX XXX|XXX XXX|XXX XXX|XXX
这是我的代码
System.out.print("");
for(int i = 0; i<4; i++)
{
//System.out.println(i);
for(int j = 0; j < numbers[i];j++)
{
//System.out.println(j);
System.out.print(" XXX|XXX ");
}
System.out.println(" ");
}
它打印这个
XXX|XXX
XXX|XXX XXX|XXX
XXX|XXX XXX|XXX XXX|XXX
XXX|XXX XXX|XXX XXX|XXX XXX|XXX
建议?
解决方案
通过使用array
andString.join()
方法,您可以创建一个长度为 board 数组中最后一个数字的数组。这确保了输出中包含的所有字符串都具有相同的长度——没有丑陋的、意外的单字符偏移。然后,您可以遍历小于堆数组长度的数字,并检查该位置是否应该是空格或填充“XXX|XXX”
之后,您将拥有如下所示的数组:
{" "," "," ","XXX|XXX"}
{" "," ","XXX|XXX","XXX|XXX"}
{" ","XXX|XXX","XXX|XXX","XXX|XXX"}
{"XXX|XXX","XXX|XXX","XXX|XXX","XXX|XXX"}
int [] board = {1,2,3,4};
for (int i : board) {
String[] pile = new String[board[board.length-1]];
for (int x = 0; x < pile.length; x++) {
if (x < pile.length-i) {
pile[x] = " ";
} else {
pile[x] = "XXX|XXX";
}
}
String s = String.join(" ", pile);
System.out.println(s);
}
输出:
XXX|XXX
XXX|XXX XXX|XXX
XXX|XXX XXX|XXX XXX|XXX
XXX|XXX XXX|XXX XXX|XXX XXX|XXX
这个循环也能够支持任何长度的板,只要板中的每个项目增加 1。
推荐阅读
- java - Couchbase BucketClosedException,而桶正在被积极使用
- python - 在 try/except 语句中的异常期间继续
- pandas - 使用熊猫按绝对值对列进行排序
- javascript - Angular 9 如何从角度数组对象的所有数组中删除字段?
- ruby-on-rails - 切换 ruby 版本时始终找不到捆绑程序
- java - Resilience4J 断路器启动特定的 HTTP 状态代码
- vue.js - 当我尝试确认来自烧瓶的电子邮件然后重定向到 vue 路由时出错,我错过了什么或者我可以使用什么方法?
- reactjs - 获得 React componentWillMount 警告甚至很难我没有使用它
- excel - vb.net 数组中元素的最大大小
- javascript - 如何在单独的 HTML 网站上重用这个响应式导航栏