java - 打印棋盘格或方形图案
问题描述
我正在学习 Java,目前正在尝试使用该程序制作一些 ASCII 艺术作品。我能够制作一个空心钻石,但我正在努力创建一个“棋盘”或方形图案。我正在尝试创建如下所示的内容:
*** *** ***
*** *** ***
由于某种原因,它不断出现这样的情况:
***
***
***
***
我知道问题出在我的 for 循环上。由于我刚刚了解了嵌套循环,因此我仍在尝试理解其中的逻辑。我的中间循环控制空间,无论我为s
(我的递增变量)设置什么值,它仍然使模式变得奇怪。
这是我的代码:
public class ASCII_Art {
public static void squares() {
System.out.println("***\n*** ");
}
public static void main(String[] args) {
for (int i = 0; i <= 5; i++) {
for (int y = 0; y < i - 4; y++) {
squares();
System.out.print(" ");
squares();
}
}
}
}
我做了一个方形方法,因为我读到这些方法使一切变得更清晰、更容易,因为您不必多次重写相同的代码。
解决方案
这里有几个问题。
正如其他人指出的那样,
\n
创建一条新线,
就像这样。\t
另一方面,创建一个缩进,\t
就是你想要的。在您的
squares
函数中,您只打印两个***
s。而是打印 3。由于
squares
已经打印了一行,因此您只需要一个最多为 2 的 for 循环。执行此操作的常规方法是int i = 0; i < 2
.
下面是完整的更正代码(我修复了缩进,重新括起来并添加了一个main
方法):
public class ASCII_Art
{
public static void squares(){
System.out.println("***\t***\t***");
}
public static void main(String[] args) {
for (int i = 0; i < 2; i++) {
squares();
}
}
}
或者,由于您的squares
方法实际上并没有提供太多价值,您可以这样做:
public class ASCII_Art
{
public static void main(String[] args) {
for (int i = 0; i < 2; i++) {
System.out.println("***\t***\t***");
}
}
}
如果你想进一步定制你的 ASCII 艺术,你可以制作一个带有 3 个参数的函数:一个用于*
s 的数量,一个用于一行中的星号块数,一个用于行数。我会让你自己弄清楚...
推荐阅读
- c# - 如何使用命名空间读取 XML
- javascript - 从 Javascript 对象中删除数据
- python - 为什么 SymPy 的积分有时会产生非常长的数字的反导数?
- javascript - 尝试通过 onClick() 传递变量时未定义变量
- javascript - react native 和 redux 中的 hoc 组件?
- calculator - 如果没有错误,是否存在一组表达式来测试计算器应用程序?
- sql - 如何在表类型为时间序列的表中显示多个列?
- functional-programming - 布尔值作为函数并构造 if-then-else
- go - 如何构建 Go 应用程序以生成多个二进制文件?
- mysql - epoch_time 的转换在 mysql 中给出 '1970-01-01'