有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java打印金字塔格式的指定字母表

我在用Java打印半金字塔格式的字母表XXYY时遇到了一些问题。以下是用户输入高度7时的预期输出:

XX
YYXX
XXYYXX
YYXXYYXX
XXYYXXYYXX
YYXXYYXXYYXX
XXYYXXYYXXYYXX

这是我的代码:

public static void main(String[] args){
    int height = 0;
    String display = "";
    Scanner sc = new Scanner(System.in);

    System.out.print("Enter height: ");
    height = sc.nextInt();

    for(int i = 1; i <= height; i++){
        for(int j = 1; j <= i; j++){
            if(j %2 == 0){
                display = "YY" + display;
            }else{
                if(j == 1){
                    display = "XX";
                }
            }
            System.out.print(display);
        }
        System.out.println();
    }
}

我的逻辑是首先检查偶数/奇数行,然后将XX或YY添加到显示字符串中。首先检查第一行,然后将XX添加到显示字符串中。然后,如果是偶数行,我将YY附加到显示字符串的前面

但我的问题是,我不知道如何计算每行的XX和YY的数量。以下是我的输出:

XX
XXYYXX
XXYYXXYYXX
XXYYXXYYXXYYYYXX
XXYYXXYYXXYYYYXXYYYYXX
XXYYXXYYXXYYYYXXYYYYXXYYYYYYXX
XXYYXXYYXXYYYYXXYYYYXXYYYYYYXXYYYYYYXX

共 (2) 个答案

  1. # 1 楼答案

    你把事情复杂化了。每一行的字母对数与行号相同(第一行一对,第二行两对,以此类推)。第一行以“XX”开头,然后开始在“XX”和“YY”之间交替。以类似的方式,在这一行中,在确定了开始字母后,在两对字母之间交替:

    for (int row = 0; row < height; ++row) {
        for (int col = 0; col <= row; ++col) {
            if ((col + row) % 2 == 0) {
                System.out.print("XX");
            } else {
                System.out.print("YY");
            }
        }
        System.out.println();
    }
    
  2. # 2 楼答案

    这应该可以做到:

    public static void main (String[] args) throws java.lang.Exception
    {
        int ht = 0;
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter height: ");
        ht = sc.nextInt();
    
        String text = "";
        for(int i=0; i<ht; i++)
        {
            if (i%2!=0)
                text = "YY" + text;
            else
                text = "XX" + text;
            System.out.println(text);
        }
    }
    

    并且也适用于单for循环