Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回包含X个重复字符且无循环的字符串_Java_String - Fatal编程技术网

Java 返回包含X个重复字符且无循环的字符串

Java 返回包含X个重复字符且无循环的字符串,java,string,Java,String,我卡住了一点。我有一个方法,它应该返回一个包含X次重复字符“y”的新字符串。X和Y是方法的参数。简单的解决方案如下: public String someMethod(int x,char y){ String result=""; for (int i=0;i<x;i++) result+=y; return result; } 但是对于StringBuilder或StringBuffer等没有这样的方法。你能给我一些建议吗?提前谢谢 更新: 因此,解决

我卡住了一点。我有一个方法,它应该返回一个包含X次重复字符“y”的新字符串。X和Y是方法的参数。简单的解决方案如下:

public String someMethod(int x,char y){
    String result="";
    for (int i=0;i<x;i++) result+=y;
    return result;    
}
但是对于StringBuilder或StringBuffer等没有这样的方法。你能给我一些建议吗?提前谢谢

更新: 因此,解决方案将是:

public String someMethod(int x,char y){
    return new String(new char[x]).replace("\0", String.valueOf(y))  
}

谢谢你的帮助

使用StringBuffer&loop,如果没有loop,则无法执行此操作。

即使您发现了一种方法,它可以在没有循环的情况下完成,但在它的内部仍然使用循环。

使用StringBuffer&loop,没有循环,这是无法完成的。

即使你找到了一种不用循环就能完成的方法,但在它的内部仍然使用循环。

试试这个。这里我们生成一个新的
char[]
,默认初始化为所有
0
,然后用我们想要的字符替换这些
0

public class B {

    public static void main(String[] args) {            
        int x = 5;
        String y = "h";
        String result = new String(new char[x]).replace("\0", y);
        System.out.println(result);
    }
}

试试这个。这里我们生成一个新的
char[]
,默认初始化为所有
0
,然后用我们想要的字符替换这些
0

public class B {

    public static void main(String[] args) {            
        int x = 5;
        String y = "h";
        String result = new String(new char[x]).replace("\0", y);
        System.out.println(result);
    }
}
…但如果这不是一个难题,递归并不比循环好

另一方面,与某些字符串实函数相比,当有人想要删除循环时(在本例中为
newstring(char[])
replace()
),递归更为普遍

…但如果这不是一个难题,递归并不比循环好

另一方面,当有人想要删除循环而不是某些字符串实函数时(在本例中是
newstring(char[])
replace()

递归更为普遍

import java.util.Arrays;

public String someMethod(int x,char y){
    char[] a = new char[x];
    Arrays.fill(a, 0, x, y);
    return new String(a);
}
你能行

import java.util.Arrays;

public String someMethod(int x,char y){
    char[] a = new char[x];
    Arrays.fill(a, 0, x, y);
    return new String(a);
}

正如其他人所说,完全没有循环是不可能的——您可以将它隐藏在其他方法后面,但它们仍然使用循环

如果只是为了“更紧凑”的代码,您可以编写自己的方法来实现这一点,或者使用第三方lib,如apachecommons StringUtils:
StringUtils.repeat(String str,int repeat)
应该完成这项工作


正如其他人所说,没有循环是不可能完全实现的——你可以将它隐藏在其他方法后面,但它们仍然使用循环

如果只是为了“更紧凑”的代码,您可以编写自己的方法来实现这一点,或者使用第三方lib,如apachecommons StringUtils:
StringUtils.repeat(String str,int repeat)
应该完成这项工作


对于java 8,您可以使用流:

Stream.generate(() -> String.valueOf(y))
      .limit(x)
      .collect(Collectors.joining()).toString()

对于java 8,您可以使用流:

Stream.generate(() -> String.valueOf(y))
      .limit(x)
      .collect(Collectors.joining()).toString()

五年后,我回答了自己的问题

在Java 11中,可以按如下方式执行:

public String someMethod(int x, char y) {
    return String.valueOf(y).repeat(x);
}

五年后,我回答了自己的问题

在Java 11中,可以按如下方式执行:

public String someMethod(int x, char y) {
    return String.valueOf(y).repeat(x);
}

有什么理由不需要循环就可以完成吗?任何内置函数,如果它存在的话,最有可能使用循环。只是为了简化(使代码更紧凑)。这不是一个很好的理由,请使用循环。如果我看一下你的代码,我会开始想“s/he试图实现什么”,然后是“为什么没有循环?一定有原因”。如果您只使用循环(同时避免连接-使用StringBuilder),那么很明显您正在尝试做什么,这是通常的方法。有什么原因必须在没有循环的情况下完成吗?任何内置函数,如果它存在的话,最有可能使用循环。只是为了简化(使代码更紧凑)。这不是一个很好的理由,请使用循环。如果我看一下你的代码,我会开始想“s/he试图实现什么”,然后是“为什么没有循环?一定有原因”。如果您只想使用循环(同时避免连接-使用StringBuilder),那么很明显您要做的是,这是通常的方法。@user3523579,我只是更新了它,使用变量而不是文字,但这是一样的。比这更简单:创建
char[]
并使用
Arrays.fill()
@fge,
Arrays.fill()
返回
void
,这样至少需要三行(一行声明
char[]
,一行填充,一行生成字符串),其中我的解决方案需要一行。@user3523579,我刚刚更新它以使用变量而不是文本,但这是同一件事。还有比这更简单的事情:创建一个
char[]
并使用
Arrays.fill()
@fge,
Arrays.fill()
返回
void
,这样至少需要三行(一行声明
char[]
,一行填充,一行生成字符串),我的解决方案需要一行代码。