Java中处理钻石的递归

Java中处理钻石的递归,java,recursion,Java,Recursion,我想出了一个代码,显示计算机中某个文件中的菱形图案。我遇到的问题是,代码读取的INT不同,并且第一行上的每个*都处于关闭状态。我真的不知道如何解决这个问题,因为第一颗钻石显示得非常完美。我的if语句也有问题。如果数字小于0或大于25,则不应打印出来,但即使使用If语句,钻石仍在打印出来。有人能帮我解决这两个问题吗 代码 预期产出: * * * * * * * * * * * * * * * * * * * *

我想出了一个代码,显示计算机中某个文件中的菱形图案。我遇到的问题是,代码读取的INT不同,并且第一行上的每个*都处于关闭状态。我真的不知道如何解决这个问题,因为第一颗钻石显示得非常完美。我的if语句也有问题。如果数字小于0或大于25,则不应打印出来,但即使使用If语句,钻石仍在打印出来。有人能帮我解决这两个问题吗

代码

预期产出:

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

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


正如David所说,您应该用以下代码替换这段代码:

while (sc.hasNextLine()) {
    int num = sc.nextInt();

    if (num < 0 || num > 25)

       System.out.println("Can not print")
       break;

    }else{

       new Pract2().results(num);


     } 
while(sc.hasNextLine()){
int num=sc.nextInt();
如果(num<0 | | num>25)
System.out.println(“无法打印”)
打破
}否则{
新的Pract2()。结果(num);
} 

问题来自当前行星上下一行
*
的空格

如果你用一个不同的字符替换空格,说“u”,然后打印出一颗星,你会看到这个

___*__
__*_*__
_*_*_*__
__*_*__
___*__
___ <- look here

if
语句出现在导致打印结果的行之后。调用
results
完全不是以
if
为条件的。将所有空格(“”)替换为“.”,你会发现一些有趣的事情,在它显示你的评论声明没有递归之前……这是真的吗?我是递归的初学者,所以我知道它是如何工作的。我只是假设这是递归,我看到每个方法都调用它自己…我以为是这样的recursion@user3846760是的,
method1
space
中存在递归。不知道人们在说什么“无递归”。
while (sc.hasNextLine()) {
    int num = sc.nextInt();

    if (num < 0 || num > 25)

       System.out.println("Can not print")
       break;

    }else{

       new Pract2().results(num);


     } 
___*__
__*_*__
_*_*_*__
__*_*__
___*__
___ <- look here
public void results(int num) {
    for (int i = 1; i < num; i++) {
        System.out.print(space(num - i));
        System.out.println(method1(i));
    }
    for (int i = 0; i < num; i++) {
        System.out.println(method2(num - i));
        if(i+1 < num) // make sure we have another star
            System.out.print(space(i));
    }
}