Java for循环制作星号矩阵
Java for loop making asterisk matrix
我目前正在尝试使用 Java 中的 for 循环制作此表单:
**********
*********
********
*******
******
*****
****
***
**
*
我的代码如下所示:
for (int row = 1; row <= 10; row++) {
for (int star = 10; star >= 1; star--) {
if (star >= row) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
输出如下所示:
**********
*********
********
*******
******
*****
****
***
**
*
我似乎想不出让空白在星星之前。我试过切换循环条件,但它给了我相同的结果。
关于这些 for 循环,我有些不明白。有人能给我指出正确的方向吗:)
将内部循环更改为标准的 1 到 10 循环。
for (int row = 1; row <= 10; row++) {
for (int star = 1; star <= 10; star++) {
if (star >= row) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
试试这个
int size = 10;
for (int row = 0; row < size; row++)
{
for (int i = 0; i < row; i++)
{
System.out.print(" ");
}
for (int i = size - row; i > 0; i--)
{
System.out.print("*");
}
System.out.println();
}
第一项工作是离开键盘思考问题。原来star的条件是"current row >= current column".
使用
实施
for (int row = 1; row <= 10; ++row){
for (int col = 1; col <= 10; ++col){
System.out.print( row >= col ? "*" : " ");
}
System.out.println();
}
for(int i = 0 ; i < 10 ; i++){
for(int j = 0 ; j < 10 ; j++){
if(j >= i){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println("");
}
所以我试着分析你的代码,我发现的是
你的错误:
在这里我们看到所需的输出和您的输出与输出行号 2 不同,我发现的原因是 if
条件 star >= row
所以让我们迭代 star 的循环row
值 2
:
if(star >= row) //when star = 10 - condition true. * will be the output
if(star >= row) //when star = 9 - condition true. * will be the output
if(star >= row) //when star = 8 - condition true. * will be the output
所以 *
将是输出,直到 star>=row
returns false 这将是此迭代的 star = 1
场景。
类似地,对于 row = 3
,条件将为真,除非 star
值变为 <=2
。所以问题是你在开始时打印 *
并且 </code> 的条件出现在打印 <code>*
.
之后
可能的解决方案:
基本上你需要在开头打印 </code>,而不是在结尾。因此,在相同条件下,您可能需要反转列的迭代方法以反转打印顺序。如果您更改循环的顺序,您就可以完成这项工作。让我们为 <code>2
:
的 row
值迭代循环
if(star >= row) //when star = 1 - condition false. ` ` will be the output
if(star >= row) //when star = 2 - condition true. * will be the output
if(star >= row) //when star = 8 - condition true. * will be the output
所以在这种情况下,</code> 将首先打印,<code>*
将稍后打印。
更新代码:
我已经更新了你的代码。看看 inner for loop
.
for (int row = 1; row <= 10; row++)
{
for (int star = 1; star <= 10; star++)
{
if (star >= row)
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
希望这对您有所帮助:)
我目前正在尝试使用 Java 中的 for 循环制作此表单:
**********
*********
********
*******
******
*****
****
***
**
*
我的代码如下所示:
for (int row = 1; row <= 10; row++) {
for (int star = 10; star >= 1; star--) {
if (star >= row) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
输出如下所示:
**********
*********
********
*******
******
*****
****
***
**
*
我似乎想不出让空白在星星之前。我试过切换循环条件,但它给了我相同的结果。 关于这些 for 循环,我有些不明白。有人能给我指出正确的方向吗:)
将内部循环更改为标准的 1 到 10 循环。
for (int row = 1; row <= 10; row++) {
for (int star = 1; star <= 10; star++) {
if (star >= row) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
试试这个
int size = 10;
for (int row = 0; row < size; row++)
{
for (int i = 0; i < row; i++)
{
System.out.print(" ");
}
for (int i = size - row; i > 0; i--)
{
System.out.print("*");
}
System.out.println();
}
第一项工作是离开键盘思考问题。原来star的条件是"current row >= current column".
使用
实施for (int row = 1; row <= 10; ++row){
for (int col = 1; col <= 10; ++col){
System.out.print( row >= col ? "*" : " ");
}
System.out.println();
}
for(int i = 0 ; i < 10 ; i++){
for(int j = 0 ; j < 10 ; j++){
if(j >= i){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println("");
}
所以我试着分析你的代码,我发现的是
你的错误:
在这里我们看到所需的输出和您的输出与输出行号 2 不同,我发现的原因是 if
条件 star >= row
所以让我们迭代 star 的循环row
值 2
:
if(star >= row) //when star = 10 - condition true. * will be the output
if(star >= row) //when star = 9 - condition true. * will be the output
if(star >= row) //when star = 8 - condition true. * will be the output
所以 *
将是输出,直到 star>=row
returns false 这将是此迭代的 star = 1
场景。
类似地,对于 row = 3
,条件将为真,除非 star
值变为 <=2
。所以问题是你在开始时打印 *
并且 </code> 的条件出现在打印 <code>*
.
可能的解决方案:
基本上你需要在开头打印 </code>,而不是在结尾。因此,在相同条件下,您可能需要反转列的迭代方法以反转打印顺序。如果您更改循环的顺序,您就可以完成这项工作。让我们为 <code>2
:
row
值迭代循环
if(star >= row) //when star = 1 - condition false. ` ` will be the output
if(star >= row) //when star = 2 - condition true. * will be the output
if(star >= row) //when star = 8 - condition true. * will be the output
所以在这种情况下,</code> 将首先打印,<code>*
将稍后打印。
更新代码:
我已经更新了你的代码。看看 inner for loop
.
for (int row = 1; row <= 10; row++)
{
for (int star = 1; star <= 10; star++)
{
if (star >= row)
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
希望这对您有所帮助:)