【问题标题】:Java string method not returning string [duplicate]Java字符串方法不返回字符串[重复]
【发布时间】:2020-01-22 21:00:23
【问题描述】:

我对编码很陌生,刚刚被介绍给静态方法,所以我提前为愚蠢的错误道歉。当在 main 下调用该方法时,该方法应该显示一个三角形,但是我得到一个空控制台并且没有输出。但是,如果我在 main 下写这个:

    String triangle = getTriangle(3, 4);    
    System.out.println(triangle);               

然后,三角形将显示在控制台中,但是对于此分配,字符串/三角形必须仅通过使用来调用 getTriangle(maxRows, maxCols)

public class Triangle {

    public static String getTriangle(int maxRows, int maxCols) {
        String T = "";

        if (maxRows < 1 || maxCols < 1) {
            return null;
        } else {
            for (int row = 1; row <= maxRows; row++) {
                for (int col = 1; col <= row; col++) {
                    T += "*";
                }
                T += "\n";  }   
            }
            return T;
        }
    }


    public static void main(String[] args) {
        getTriangle(3,2);           

    }

}

【问题讨论】:

  • 只需将System.out.println(T); 粘贴在getTriangle 方法的最后,并将其更改为返回void,而不是String。另外,请注意正确的代码格式。它会帮助你和其他人。
  • getTriangle 应该返回一些东西(因为get这个词)。 printTriangle 应该打印它。真的,OP 应该只是覆盖toString

标签: java string methods


【解决方案1】:

首先,您应该尝试通过正确缩进来使代码更具可读性。
这样阅读是不是容易多了?

public class Triangle {

    public static String getTriangle(int maxRows, int maxCols) 
    {
        String T = "";

        if (maxRows < 1 || maxCols < 1) 
        {
            return null;

        } 
        else 
        {
            for (int row = 1; row <= maxRows; row++) 
            {
                for (int col = 1; col <= row; col++) 
                {
                    T += "*";
                }
                T += "\n";  
            }   
        }
        return T;
    }

    public static void main(String[] args) 
    {
        getTriangle(3,2);           
    }
}

其次,更重要的是,正如其他人所说,你的主要方法应该去

public static void main(String[] args) 
{
    System.out.println(getTriangle(3,2));
}

你正在接收字符串,你只是没有输出它

【讨论】:

    【解决方案2】:

    使您的方法void 并在方法末尾打印T

    public static void getTriangle(int maxRows, int maxCols) {    
        if (maxRows < 1 || maxCols < 1) {
            return; 
        }
    
        String T = "";
    
        for (int row = 1; row <= maxRows; row++) {
            for (int col = 1; col <= row; col++) {
                T += "*";
            }
            T += "\n";
        }
    
        System.out.println(T);
    }
    

    由于不再返回三角形,因此可以将方法重命名为 printTriangle。就个人而言,如果条件maxRows &lt; 1 || maxCols &lt; 1 成立,我会抛出异常,但这是一个不同的主题。

    【讨论】:

      【解决方案3】:

      您仍然需要在 main 方法中打印 getTriangle 的结果。现在你只是忽略了这个结果。

      System.out.println(getTriangle(3,2));
      

      【讨论】:

        【解决方案4】:

        您可以在您的方法returns 之前打印它。

        public static String getTriangle(int maxRows, int maxCols) {
            String T = "";
        
            if (maxRows < 1 || maxCols < 1) {
                return null;
        
            } else {
        
                for (int row = 1; row <= maxRows; row++) {
                    for (int col = 1; col <= row; col++) {
                        T += "*";
                    }
                    T += "\n";
                }
            }
            System.out.println(T); // Print the triangle
            return T;
        }
        

        (个人观点)

        之后,该方法将返回打印三角形,因此我不会将该方法命名为getTriangle。也许像getAndPrintTriangle...

        【讨论】:

          【解决方案5】:

          你可以添加行 System.out.println(T); 前 返回 T; 这样做。

          【讨论】:

            猜你喜欢
            • 2016-05-19
            • 2020-04-13
            • 2023-03-30
            • 1970-01-01
            • 2015-03-15
            • 2020-08-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多