是否可以使用嵌套回圈生成這種布局?我仍然是嵌套到 Java/回圈的新手,無法解決這個問題。
*****====
*****===
*****==
*****=
*****
====
===
==
=
我在不讓“ ”遞增的情況下使用“*”字符回圈五次時遇到問題。
這是我的代碼:
class Main {
public static void main(String[] args) {
for (int k = 4; k > 0; k--) {
System.out.print("*****");
for (int l = 0; l < k; l ) {
System.out.print("=");
}
for (int m = 0; m < 1; m ) {
for (int n = 0; n < m; n ) {
System.out.print(" ");
}
}
System.out.println();
}
System.out.print("***** ");
}
}
uj5u.com熱心網友回復:
這個問題可能有多種方法,這是我的想法:
- 您需要顯示 9 行“某事”,所以讓我們擁有頂級回圈:
for (int i=0; i<9; i ) {...}
- 現在,這個回圈的每次迭代都需要顯示 X 星、Y 等號、Z 加號:
for (int i=0; i<9; i ) {
for (int j=0; j< #X# ; j ) System.out.print("*");
for (int j=0; j< #Y# ; j ) System.out.print("=");
for (int j=0; j< #Z# ; j ) System.out.print(" ");
System.out.println();
}
- 現在您需要確定如何更改 X、Y、Z 的規則,這是我想出的邏輯:
if (stars > 0 && equals == 0) {
stars = 0;
equals = 5;
}
equals--;
pluses ;
因此,最終代碼將如下所示:
public static void main(String[] args) throws InterruptedException {
int stars = 5; // initial state
int equals = 4;
int pluses = 1;
for (int i=0; i<9; i ) {
for (int j=0; j<stars; j ) System.out.print("*");
for (int j=0; j<equals; j ) System.out.print("=");
for (int j=0; j<pluses; j ) System.out.print(" ");
System.out.println();
if (stars > 0 && equals == 0) {
stars = 0;
equals = 5;
}
equals--;
pluses ;
}
}
uj5u.com熱心網友回復:
如果你注意到有一個模式。*它從左到右列印一個開始。 它從右到左為每個遞增的數字列印一個。=如果您超過中點(首先是從左到右的中點,然后是從上到下的中點),它會列印 a而不是 *。
邏輯可以應用如下,
class Main {
public static void main(String[] args) {
int max = 10;
int switchPoint = max - 1;
for(int i = 1; i <= max -1; i ) {
for(int j = 1; j <= max; j ) {
if(j > switchPoint)
System.out.print(" ");
else if( i > max/2 || j > max / 2)
System.out.print("=");
else
System.out.print("*");
}
switchPoint--;
System.out.println();
}
}
}
/* Output:
*****====
*****===
*****==
*****=
*****
====
===
==
=
*/
uj5u.com熱心網友回復:
公共類 A {
public static void main(String[] args) {
for (int k = 4; k > 0; k--) {
System.out.print("*****");
for (int l = 0; l < k; l ) {
System.out.print("=");
}
for (int m = 0; m < 5 - k; m ) {
System.out.print(" ");
}
System.out.println();
}
System.out.print("***** ");
System.out.println();
for (int s = 4; s > 0; s--) {
for (int k = 0; k < s; k ) {
System.out.print("=");
}
for (int l = 0; l < 5; l ) {
System.out.print(" ");
}
for (int m = 0; m < 5 - s; m ) {
System.out.print(" ");
}
System.out.println();
}
}
}
uj5u.com熱心網友回復:
您可能會注意到前五行中的“*”和“=”的行為與接下來的五行不同,因此您可以將回圈分成兩個回圈或制作一個回圈并檢查您是否正在列印前五行或最后一行,可以通過 if 陳述句或在回圈條件中完成檢查。
所以代碼看起來像:
class Main {
public static void main(String[] args) {
for (int i = 1; i < 10; i ){
for (int j = 1; i <= 5 && j <= 5; j ){
System.out.print("*");
}
for (int k = 5; (i <= 5 && k > i) || (i > 5 && k > i-5); k--){
System.out.print("=");
}
for (int l = 1; l <= i; l ){
System.out.print(" ");
}
System.out.println();
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/511112.html
標籤:爪哇循环嵌套的嵌套循环
