你如何在for循环中调用函数?

时间:2014-10-01 19:22:09

标签: java bluej

在最后一种方法中,我试图在for循环中调用printPattern,但我不知道我做错了什么。我使用的是BlueJ,所以我不确定Eclipse中的代码是否会有所不同。

这是程序:

public class recursion
{

    private int count;

    private String printPattern(int count, int itterations)
    {
        int i;
        String line= "";

        for(i=0; i <= count; i++)
        {
            if (i > itterations)
            {
                line = line + i;
            }
            else {line = line + "*";}
        }
        line = line + reverseLine(line);
        return line;
    }

    private String reverseLine (String line)
    {
        int size;
        String linerev = "";
        for (int i = line.length() - 1; i >= 0; i--)
        {
            linerev= linerev + line.charAt(i);
        }
        return linerev;
    }

    private void addLineandReverse (int n)
    {
        int w= n;
        //for loop
        //calls function print pattern
        //add itteration ++
        //prints out
        for (n= 9; n <= printPattern; n++)
        {
            System.out.println();
        }
    }
}

这是我希望程序的输出看起来像:

      123456789987654321
      *2345678998765432*
      **34567899876543**
      ***456789987654***
      ****5678998765****
      *****67899876*****
      ******789987******
      *******8998*******
      ********99********
      ******************

2 个答案:

答案 0 :(得分:1)

您正在使用该函数作为for循环停止条件的限制。但这似乎是错误的,因为我不认为函数是返回条件的结果,它返回一个字符串。

我不确定你要通过调用函数来完成什么。以及为什么要重新分配n到9。

无论哪种方式调用printPattern方法,都必须使用以下语法:

printPattern(aNumber, anotherNumber)

可行的代码(但可能不会输出您想要的代码)将是:

public void addLineandReverse (final int n)
{
   //for loop 
   // calls function print pattern
   // add itteration ++
   //prints out
   for (int i = 0; i <= n; ++n) {
     System.out.println(printPattern(w, n));
   }
}

好的,我接受了你的要求并调整了你的代码,并尽可能地保持你的设计(这不是我将采取的设计来解决这个问题,但它有效。

public class Recursion {

    public static void main(String[] args) {
        final Integer count = 9;
        final Recursion recursion = new Recursion(count);
        recursion.addLineAndReverse();
    }

    public Recursion(final Integer count) {
        this.count = count;
    }

    private final int count;

    public String printPattern(final int lineNumber) {

        String line= "";

        for(int i = 1; i <= count; ++i){
            if (i >= lineNumber) {
                line += i;
            } else {
                line += "*";
            }
        }
        line += reverseLine(lineNumber);
        return line;
    }

    public String reverseLine(final int lineNumber)
    {

        String line= "";

        for(int i = count; i >= 1; --i){
            if (i >= lineNumber) {
                line += i;
            } else {
                line += "*";
            }
        }

        return line;
    }

    public void addLineAndReverse(){
        for (int i = 1;  i <= count + 1; ++i){
            System.out.println(printPattern(i));
        }

    }

}

答案 1 :(得分:0)

根据您的描述,您只能通过printPattern调用,但函数定义是String printPattern(int count,int itterations)