java - 无法在 Java 中获得类似金字塔的图像
问题描述
上面是图像,我正在努力实现,我几乎接近逻辑但不完全存在,任何想法我错过了什么
class GFG
{
static void printSierpinski(int n)
{
for (int y = n - 1; y >= 0; y--) {
// printing space till
// the value of y
for (int i = 0; i < y; i++) {
System.out.print(" ");
}
// printing '*'
for (int x = 0; x + y < n; x++) {
// printing '*' at the appropriate
// position is done by the and
// value of x and y wherever value
// is 0 we have printed '*'
if ((x & y) != 0)
System.out.print(" "
+ " ");
else
System.out.print("* ");
}
System.out.print("\n");
}
}
// Driver code
public static void main(String args[])
{
int n = 16;
// Function calling
printSierpinski(n);
}
}
解决方案
我在大约一个小时内创建了以下输出。我不会发布我的代码。我将解释我是如何解决这个问题的,希望 OP 和其他人能学到一些关于逻辑的东西。
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* *
* * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
* * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
我做的第一件事是编写一个创建字符串的方法。此方法将 char 和 int 长度作为参数。该方法的结果是空白字符串或星号字符串。当我创建星号字符串时,我在星号之间插入了空格。
一旦我使该方法起作用,我就打印了底线。然后我在底线之前打印了一行。在这一点上,我并不关心 for 循环或 while 循环或任何其他类型的水果循环。我想看看逻辑模式是什么。
在推断出模式之前,我打印了底部的 5 行。一旦我理解了逻辑,我就编写了 for 循环。好的,此时我已经完成了一半的金字塔。
在我理解上金字塔的逻辑之前,我打印了几行上金字塔。一旦我理解了逻辑,编写上金字塔 for 循环就很简单了。
完成代码后,我意识到我可以概括代码以创建具有任何宽度底的金字塔。这就是为什么我在这个答案的开头发布了 9 级金字塔。
我的故事的寓意是首先要理解逻辑,即使您必须编写一些丑陋的代码来帮助您理解。我是一位经验丰富的开发人员,我不得不进行一些实验来弄清楚逻辑。
一旦你理解了逻辑,那么你就可以编写漂亮的代码。
推荐阅读
- json - curl get is omitting json that is shown in the browser
- python - 下一个字典上更大的字符串排列和解决方案效率
- android - Android - asynctask 执行顺序
- excel - 为什么这个 SUMPRODUCT 会抛出错误?结构没问题,底层列无错误
- c# - c# uwp 多个活动蓝牙连接
- html - 媒体查询卡住
- c - 如何使用 gcc 编译器在 C 语言项目中查找死代码
- sql - ORACLE根据列值动态查询where子句
- javascript - JS调用者在被调用方法返回值时未定义
- ruby-on-rails - Rails 4.2 和 Postgres:数据库迁移更改 schema.rb - null:从时间戳中删除 false