我想創建一個這樣的數字金字塔,
7
5 6 5
3 4 5 4 3
1 2 3 4 3 2 1
但我無法創建它。我粘貼了我的代碼,它的輸出是這樣的,
7
5 6 7 6 5
3 4 5 6 7 6 5 4 3
1 2 3 4 5 6 7 6 5 4 3 2 1
我應該怎么做才能解決這個問題?我的代碼是完全錯誤的還是小改動就足夠了?
import java.util.Scanner;
public class App {
public static void main(String[] args){
Scanner myScan = new Scanner(System.in);
System.out.print("Enter mountain width: ");
int width = myScan.nextInt();
System.out.println("Here is your mountain ");
myScan.close();
System.out.println();
for (int i = width; i >= 1; i=i-2)
{
for (int j = 1; j <= i*2; j )
{
System.out.print(" ");
}
for (int j = i; j <= width; j )
{
System.out.print(j " ");
}
for (int j = width-1; j >= i; j--)
{
System.out.print(j " ");
}
System.out.println();
}
}
}
uj5u.com熱心網友回復:
您可以計算行索引,然后很容易得到數字范圍
for (int i = width; i >= 1; i -= 2) {
int row_idx = (width - i) / 2;
for (int j = 1; j <= i; j ) {
System.out.print(" ");
}
for (int j = i; j <= i row_idx; j ) {
System.out.print(j " ");
}
for (int j = i - 1 row_idx; j >= i; j--) {
System.out.print(j " ");
}
System.out.println();
}
uj5u.com熱心網友回復:
您只需要計算級別。您可以通過添加額外的計數變數來做到這一點。舉個例子:
- 在 0 級,您只需列印 7 并且計數為 0。
- 在 1 級計數為 1。因此您只需要從 i 的當前值 左側和右側的計數值列印。但是由于我們在左側多算了 1 個,所以右側的值會更少。
......... 代碼會這樣繼續下去。
請參閱代碼以獲得更好的解釋:
public static void main( String[] args ) {
Scanner myScan = new Scanner(System.in);
System.out.print("Enter mountain width: ");
int width = myScan.nextInt();
System.out.println("Here is your mountain ");
myScan.close();
System.out.println();
int counter = 0;
for (int i = width; i >= 1; i = i - 2) {
for (int j = 1; j <= i; j ) {
System.out.print(" ");
}
for (int j = i; j <= width - counter; j ) {
System.out.print(j " ");
}
for (int j = width - 1 - counter; j >= i; j--) {
System.out.print(j " ");
}
System.out.println();
counter ;
}
}
我只是對您的代碼進行了一些更改以使其正常作業。隊友的歡呼聲 !
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/447982.html
下一篇:在JSON物件串列中查找唯一值
