在日食中使用扫描仪打印菱形

时间:2015-11-22 12:59:13

标签: java eclipse

Enter edge length of your rhomboid: 5
Here is your rhomboid:


    *****
   *****
  *****
 *****
***** 

我需要用扫描仪打印那个菱形。我得到:* * * * * *

我的代码就像通常我并没有那么糟糕,但我甚至无法做第一行:

import java.util.Scanner;
public class rhomboid {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        System.out.println("Enter edge lenght of your rhomboid: ");
        int edgelenght = scan.nextInt();
        System.out.println("Here is your rhomboid:");

        while(edgelenght > 0){
            System.out.print(" ");
            System.out.print("*");
            edgelenght--;

2 个答案:

答案 0 :(得分:0)

所以你的代码只会打印1D输出.. 输出: - *****

所以,要解决这个问题,你需要两个循环,一个用于行和列。现在对菱形的2D打印进行一点修改,首先现在必须在打印前有4个空格的间隙,它可以通过使用另一个变量来实现k如下所示。

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);

    System.out.println("Enter edge lenght of your rhomboid: ");
    int edgelenght = scan.nextInt();
    int k = edgelenght - 1;
    for (int i = 0; i < edgelenght; i++) {

        for (int j = 0; j < k + edgelenght; j++) {
            if (j < k) {
                System.out.print(" ");
            } else {
                System.out.print("*");
            }
        }
        k--;
        System.out.println();
    }
}

答案 1 :(得分:0)

你得到的是你在代码中写的内容。

while(edgelenght > 0){
    System.out.print(" ");
    System.out.print("*");
    edgelenght--;
}

将打印edgelenght乘以空格“”,然后打印“*”。

你想要的是这样的:

for(int line = 0; line < edgeLength; line++){
    // in line 0 print 4 spaces (5-1), in line 3 print 1 (5-1-3), in line 4 (the last one) print 0
    for(int space = 0; space < edgeLength - line - 1; space++){
        System.out.print(" ");
    }
    for(int asterix = 0; asterix < edgeLength; asterix++){
        System.out.print("*");
    }
    // print a newline
    System.out.println("");
}

你需要先在线上循环 对于每一行,您需要一个循环来打印空间。一个打印*。