显示倒金字塔
Display upside-down pyramid
我想要这样的输出
5 4 3 2 1 2 3 4 5
4 3 2 1 2 3 4
3 2 1 2 3
2 1 2
1
如何在左侧留下 space?
public class Exercise4_17 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of lines: ");
int num = input.nextInt();
Exercise4_17 exe = new Exercise4_17();
exe.displayPyramid(num);
}
private void displayPyramid(int num) {
for (int i = num; i >= 1; i--) {
for (int space = 1; space <= num - i; ++space) {
System.out.print(" ");
}
for (int k = num; k >= 1; k--) {
System.out.print(k + " ");
}
for (int j = 2; j <= num; j++) {
System.out.print(j + " ");
}
System.out.println();
num--;
}
}
}
我的输出
Enter the number of lines: 5
5 4 3 2 1 2 3 4 5
4 3 2 1 2 3 4
3 2 1 2 3
2 1 2
1
您的代码非常接近。首先,作为风格问题,我会在第二个循环中使用相同的变量名(j
很刺耳,只需使用 k
)。其次,也是真正的问题,您正在修改 num
in 循环。在循环之前保存 initial 值并将其用于 space 计算。喜欢,
final int initial = num; // <-- add this
for (int i = num; i >= 1; i--) {
for (int space = 1; space <= initial - i; ++space) { // <-- use initial instead of num
System.out.print(" ");
}
for (int k = num; k >= 1; k--) {
System.out.print(k + " ");
}
for (int k = 2; k <= num; k++) { // <-- j should still work of course...
System.out.print(k + " ");
}
System.out.println();
num--;
}
希望对您有所帮助。
import java.util.Scanner;
public class MainClass {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//Taking noOfRows value from the user
System.out.println("How Many Rows You Want In Your Pyramid?");
int noOfRows = sc.nextInt();
//Initializing rowCount with noOfRows
int rowCount = noOfRows;
System.out.println("Here Is Your Pyramid");
//Implementing the logic
for (int i = 0; i < noOfRows; i++) {
//Printing i*2 spaces at the beginning of each row
for (int j = 1; j <= i*2; j++) {
System.out.print(" ");
}
//Printing j where j value will be from 1 to rowCount
for (int j = rowCount; j >= 1; j--) {
System.out.print(j+" ");
}
//Printing j where j value will be from rowCount-1 to 1
for (int j = 2; j <= rowCount; j++) {
System.out.print(j+" ");
}
System.out.println();
//Decrementing the rowCount
rowCount--;
}
}
}
ref link
输出:
你想要在你的金字塔中有多少行?
5个
这是你的金字塔
5 4 3 2 1 2 3 4 5
4 3 2 1 2 3 4
3 2 1 2 3
2 1 2
1
我想要这样的输出
5 4 3 2 1 2 3 4 5
4 3 2 1 2 3 4
3 2 1 2 3
2 1 2
1
如何在左侧留下 space?
public class Exercise4_17 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of lines: ");
int num = input.nextInt();
Exercise4_17 exe = new Exercise4_17();
exe.displayPyramid(num);
}
private void displayPyramid(int num) {
for (int i = num; i >= 1; i--) {
for (int space = 1; space <= num - i; ++space) {
System.out.print(" ");
}
for (int k = num; k >= 1; k--) {
System.out.print(k + " ");
}
for (int j = 2; j <= num; j++) {
System.out.print(j + " ");
}
System.out.println();
num--;
}
}
}
我的输出
Enter the number of lines: 5
5 4 3 2 1 2 3 4 5
4 3 2 1 2 3 4
3 2 1 2 3
2 1 2
1
您的代码非常接近。首先,作为风格问题,我会在第二个循环中使用相同的变量名(j
很刺耳,只需使用 k
)。其次,也是真正的问题,您正在修改 num
in 循环。在循环之前保存 initial 值并将其用于 space 计算。喜欢,
final int initial = num; // <-- add this
for (int i = num; i >= 1; i--) {
for (int space = 1; space <= initial - i; ++space) { // <-- use initial instead of num
System.out.print(" ");
}
for (int k = num; k >= 1; k--) {
System.out.print(k + " ");
}
for (int k = 2; k <= num; k++) { // <-- j should still work of course...
System.out.print(k + " ");
}
System.out.println();
num--;
}
希望对您有所帮助。
import java.util.Scanner;
public class MainClass {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//Taking noOfRows value from the user
System.out.println("How Many Rows You Want In Your Pyramid?");
int noOfRows = sc.nextInt();
//Initializing rowCount with noOfRows
int rowCount = noOfRows;
System.out.println("Here Is Your Pyramid");
//Implementing the logic
for (int i = 0; i < noOfRows; i++) {
//Printing i*2 spaces at the beginning of each row
for (int j = 1; j <= i*2; j++) {
System.out.print(" ");
}
//Printing j where j value will be from 1 to rowCount
for (int j = rowCount; j >= 1; j--) {
System.out.print(j+" ");
}
//Printing j where j value will be from rowCount-1 to 1
for (int j = 2; j <= rowCount; j++) {
System.out.print(j+" ");
}
System.out.println();
//Decrementing the rowCount
rowCount--;
}
}
}
ref link
输出: 你想要在你的金字塔中有多少行? 5个 这是你的金字塔
5 4 3 2 1 2 3 4 5
4 3 2 1 2 3 4
3 2 1 2 3
2 1 2
1