重复一个字符串

时间:2014-03-04 04:16:34

标签: java

我是编程新手,我必须为以下内容编写方法和程序; public static String repeat(String str,int n)返回重复n次的字符串。示例(“ho”,3)返回“hohoho”这是我的程序到目前为止:

public static void main(String[] args) {
    // **METHOD** //
    Scanner in = new Scanner(System.in);
    System.out.println("Enter a string");
    String str = in.nextLine();

    System.out.println(repeat (str));//Having trouble with this line
}

    // **TEST PROGRAM**//
public static String repeat(String str, int n)
{
    if (n <= 0)
    {
        return ""//Having trouble with this line
    }

    else if (n % 2 == 0)
    {
        return repeat(str+str, n/2);
    }

    else
    {
        return str + repeat(str+str, n/2);
    }
}                
}

我对我的代码做了一些更改,但它仍然无法正常工作

 public static void main(String[] args) {
    // **METHOD** //
    Scanner in = new Scanner(System.in);
    System.out.println("Enter a string");
    String str = in.nextLine();
    int n = in.nextInt();

    System.out.println(repeat(str,n));
}

    // **TEST PROGRAM**//
public static String repeat(String str, int n)
{
    if (n <= 0)
    {
        return "";
    }

    else if (n % 2 == 0)
    {
        return repeat(str+str, n/2);
    }

    else
    {
        return str + repeat(str+str, n/2);
    }
}                
}

4 个答案:

答案 0 :(得分:3)

您在遇到问题的线路上错过了一个半冒号,它应该是return "";而不是return ""

此外,行System.out.println(repeat (str));应该有2个参数,因为你重复定义是:

public static String repeat(String str, int n)

进一步说明,更简单的功能可能是

    public static String repeat(String str, int n)
    {
        if (n == 0) return "";

        String return_str = "";
        for (int i = 0; i < n; i++)
        {
            return_str += str;
        }

        return return_str;
    }

答案 1 :(得分:1)

我很快注意到的两件事:你忘记了一个半列,你的“重复”调用与方法签名不符(你忘记了n)

答案 2 :(得分:0)

在调用所需方法时,您没有传递正确的参数。

呼叫为repeat (str,k) k - 应为整数

答案 3 :(得分:0)

public static String repeat(String toRepeat, int n){
 if(n==0){
     return "";
 }

 return toRepeat+repeat(toRepeat,n-1);
 }