Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建具有交替行的右侧棱锥体_Java - Fatal编程技术网

Java 创建具有交替行的右侧棱锥体

Java 创建具有交替行的右侧棱锥体,java,Java,因此,对于一项任务,我的任务是使用循环创建一个模式,输出类似这样的内容 a B A c b a D C B A e d c b a F E D C B A g f e d c b a 其中,输入n=打印的行数 到目前为止,我知道我必须先打印空格,然后打印值 到目前为止,我有空格的代码,星号只是为了让我看看我是否有足够的空格 import java.util.Scanner; public class HW0

因此,对于一项任务,我的任务是使用循环创建一个模式,输出类似这样的内容

            a
          B A
        c b a
      D C B A
    e d c b a
  F E D C B A
g f e d c b a 
其中,输入n=打印的行数

到目前为止,我知道我必须先打印空格,然后打印值

到目前为止,我有空格的代码,星号只是为了让我看看我是否有足够的空格

import java.util.Scanner;

public class HW0407 {

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

        int x = input.nextInt();
        //int x = 7;


System.out.println("Pattern C");
        int a = 0;
        int b = x - 2;
        String s1 = "zyxwvutsrqponmlkjihgfedcba";
        String s2 = "ZYXWVUTSRQPONMLKJIHGFEDCBA";

        for (int row = 0; row < x; row++) {
            for (int col = 0; col <= b; col++) {

                System.out.print(" " + "*");

                if (col == b) {
                    System.out.println();
                }
            }
            b = b - 1;

        }
我想知道从哪里开始,我应该在第一个for循环中创建一个新循环,一个嵌套循环,还是将其放置在已经创建的嵌套循环中


很抱歉,如果我犯了一些奇怪的错误,我仍然对循环感到困惑,因为我刚刚被介绍给它。我曾建议使用数组和多种方法,但我不允许使用这些方法,因为它们还没有涉及到主题。

您只需要两个循环来遍历行和列(您已经有了)

在遍历列时,请使用以下逻辑:

  • 如果column index>=column index-row index,则打印列数+列索引总数为25的字符
  • 如果列索引<列索引-行索引,则打印一个空格
  • 您似乎已经知道了如何判断您应该打印大写字母还是小写字母,因此您应该拥有编写完整解决方案所需的一切。

    这是我的解决方案:

        int x = 6;
        String letters = "abcdefghijklmnopqrstuvwxyz";
        char output = 0;
        for (int i = 0; i < x; i++) {
    
            for(int j = x; j > 0; j--) {
    
                if(j > i + 1) { 
                    output = ' ';
                } else  { 
                    output = letters.charAt((j - 1) % letters.length()); 
                }
    
                if (i % 2 == 1) output = Character.toUpperCase(output);
                System.out.print(" " + output + " ");
            }
            System.out.println();
    

    看起来你现在把它打印颠倒了。你是对的,你需要先打印一个空格。这样想,在您的示例中,顶行有6个空格和1个字符。下一行有5个空格和2个字符,下一行有4个空格和3个字符。使用循环调整每行需要打印的空格和字符数。谢谢您的帮助,尽管我有一个问题。到目前为止,为了放置交替大写的行,我只放置了它,并继续尝试和错误。有没有一种方法可以通过查看代码来确定将其放在哪个循环中的位置?我看到了所有这些嵌套循环,无法理解如何将其放置在内部循环与外部循环中。与我读到的内容不同,我知道我必须使用if语句来打印空格,然后是字符,但为了打印子字符串,我需要创建另一个if语句来替换。我的问题是,我真的不知道在哪里或如何确定在哪里放置我的if语句,而是将if语句放置在通过列进行迭代的嵌套循环中。确定打印大写还是小写的if语句应该嵌套在我的答案中的case one中。
        int x = 6;
        String letters = "abcdefghijklmnopqrstuvwxyz";
        char output = 0;
        for (int i = 0; i < x; i++) {
    
            for(int j = x; j > 0; j--) {
    
                if(j > i + 1) { 
                    output = ' ';
                } else  { 
                    output = letters.charAt((j - 1) % letters.length()); 
                }
    
                if (i % 2 == 1) output = Character.toUpperCase(output);
                System.out.print(" " + output + " ");
            }
            System.out.println();
    
                   a 
                B  A 
             c  b  a 
          D  C  B  A 
       e  d  c  b  a 
    F  E  D  C  B  A