0

需要编写带有两个参数的方法完成——一个字符和一个整数。该方法应返回一个字符串,其中包含重复 n 次的字符参数,其中 n 是整数参数的值。例如:fill('z',3) 应返回“zzz”。填充('b',7)应该返回“bbbbbb”。我不允许使用集合,因为我是 Java 新手。我正在尝试编写代码:

public class first{
String fill(char s, int times) {
if (times <= 0) return "";
else return s + repeat(s, times-1);
}

如何在这里使用 char ?

4

4 回答 4

1

没有递归,非常简单:

public class StringFill {

    public static void main(String[] args) {
        System.out.println(fill('x', 5));
    }

    public static String fill (char c, int howMany) {
        if (howMany < 1) return "";
        StringBuilder sb = new StringBuilder();
        for (int i=0; i<howMany; i++) sb.append(c);
        return sb.toString();
    }

}

作为替代选择,您可以选择现成的Apache Commons Lang StringUtils方法repeat

于 2013-10-05T21:34:09.353 回答
1

听起来像一个家庭作业问题:所以我不打算展示任何代码,但你有很多不同的选择。

  1. 递归
  2. 使用StringBuilder和使用循环。
  3. 创建一个byte[]并循环遍历它并使用new String(myBytes, Charset.fromName('ASCII'));
于 2013-10-05T21:36:08.933 回答
0

嘿,这样的事情怎么样:

public class Example
{
    public void charsTimesN(char c, int n)
    {
      int i = 1;
      if (n < 0)
      {
         System.out.println("Error");
      } 
      else 
      {
         while (i <= n)
         {
            System.out.print(c);
            i++;
         }
      }
    }
}

然后有一个主类方法:

public class UseExample
{
   public static void main(String args [])
   {
      char c = 'f';
      int n = 10;
      Example e = new Example();
      e.charsTimesN(c, n);
   }
}

输出:ffffffffff

希望有帮助!

于 2013-10-05T21:57:39.933 回答
0

用填充替换重复。如果时间为 1,还要添加一个返回值。

Public class first {
  String fill(char s, int times) {
    if (times <= 0) return "";
    else if (times == 1) return s;
    else return s += fill(s, times-1);
  }
}

此外,最好将您的函数声明为私有、受保护或公有,并且不要将其保留为默认值。

于 2013-10-05T21:36:04.467 回答