在最后一种方法中,我试图在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********
******************
答案 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)