Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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,使用String.format对同一变量插值n次_Java_String_Format_Interpolation_String Interpolation - Fatal编程技术网

JAVA,使用String.format对同一变量插值n次

JAVA,使用String.format对同一变量插值n次,java,string,format,interpolation,string-interpolation,Java,String,Format,Interpolation,String Interpolation,我想使用String.format方法插值相同的变量n次 例如 String value = "hi"; String interpolated = String.format(" %s %s %s %s ", value); 我想 System.out.println(interpolated) // " hi hi hi hi " 如果您使用的是java 11,则可以使用如下方法: String value = "hi "; System.out.println(value.repeat

我想使用String.format方法插值相同的变量n次

例如

String value = "hi";
String interpolated = String.format(" %s %s %s %s ", value);
我想

System.out.println(interpolated)
// " hi hi hi hi "

如果您使用的是java 11,则可以使用如下方法:

String value = "hi ";
System.out.println(value.repeat(nTimes));
要获取插值字符串,还可以使用类:


如果您使用的是java 11,则可以使用如下方法:

String value = "hi ";
System.out.println(value.repeat(nTimes));
要获取插值字符串,还可以使用类:

您可以这样做(同时根据发生率进行编码):

您可以通过以下方式对其进行变量化:

 public String repeat(String string, int nbRepeat){
    return String.format(" " + IntStream.range(0, nbRepeat)
                                         .mapToObj(i -> "%s")
                                         .collect(Collectors.joining(" ")),
                          IntStream.range(0, nbRepeat)
                                   .mapToObj(
                                           i -> string)
                                   .toArray());
}
并使用它:

repeat("hi", 4);
repeat("ho", 6);
您可以这样做(同时根据发生率进行编码):

您可以通过以下方式对其进行变量化:

 public String repeat(String string, int nbRepeat){
    return String.format(" " + IntStream.range(0, nbRepeat)
                                         .mapToObj(i -> "%s")
                                         .collect(Collectors.joining(" ")),
                          IntStream.range(0, nbRepeat)
                                   .mapToObj(
                                           i -> string)
                                   .toArray());
}
并使用它:

repeat("hi", 4);
repeat("ho", 6);

您可以使用以下代码段:

String s = "hi";
    int n = 9;
    String interpolated  = String.format("%0"+ n +"d", 0).replace("0", s );
    System.out.println(interpolated );

您可以使用以下代码段:

String s = "hi";
    int n = 9;
    String interpolated  = String.format("%0"+ n +"d", 0).replace("0", s );
    System.out.println(interpolated );
难道没有更干净的方法吗

这取决于你想如何使用它;如果要避免流,可以使用以下任一选项:

package sample;
import java.util.Arrays;
import java.util.Formatter;

public class JoinString {
    public static void main(String[] args) {
        String[] v = {"hi","hi","hi","hi"};
        System.out.println(String.join(" ", v));
        System.out.println(Arrays.asList(v));
        Formatter formatter = new Formatter();
        System.out.println( formatter.format("%1$1s %1$1s %1$1s", "hi"));
        formatter.close();
        System.out.format("%1$1s %1$1s %1$1s %n", "hi"); 
    }
}
难道没有更干净的方法吗

这取决于你想如何使用它;如果要避免流,可以使用以下任一选项:

package sample;
import java.util.Arrays;
import java.util.Formatter;

public class JoinString {
    public static void main(String[] args) {
        String[] v = {"hi","hi","hi","hi"};
        System.out.println(String.join(" ", v));
        System.out.println(Arrays.asList(v));
        Formatter formatter = new Formatter();
        System.out.println( formatter.format("%1$1s %1$1s %1$1s", "hi"));
        formatter.close();
        System.out.format("%1$1s %1$1s %1$1s %n", "hi"); 
    }
}

您可以使用for循环。请参阅下面的代码

    Scanner sc = new Scanner(System.in);
    System.out.println("Enter word : ");
    String str = sc.next();
    System.out.println("times : ");

    int n = sc.nextInt();
    for(int i =0 ; i < n; i++){
        System.out.print(String.format("%s ", str));
    }
Scanner sc=新扫描仪(System.in);
System.out.println(“输入单词:”);
字符串str=sc.next();
System.out.println(“times:”);
int n=sc.nextInt();
对于(int i=0;i
您可以使用for循环。请参阅下面的代码

    Scanner sc = new Scanner(System.in);
    System.out.println("Enter word : ");
    String str = sc.next();
    System.out.println("times : ");

    int n = sc.nextInt();
    for(int i =0 ; i < n; i++){
        System.out.print(String.format("%s ", str));
    }
Scanner sc=新扫描仪(System.in);
System.out.println(“输入单词:”);
字符串str=sc.next();
System.out.println(“times:”);
int n=sc.nextInt();
对于(int i=0;i
您可以为格式标记指定参数位置,在这种情况下,您将对所有标记使用相同的位置:

String interpolated = String.format(" %1$s %1$s %1$s %1$s ", value);

您可以为格式标记指定参数位置,在这种情况下,您将对所有标记使用相同的位置:

String interpolated = String.format(" %1$s %1$s %1$s %1$s ", value);

尝试
String.format(“%s%s%s%s”,value,value,value,value)
您也可以尝试使用for循环。@Daniele没有更干净的方法吗?尝试
String.format(“%s%s%s%,value,value,value,value)
您也可以尝试使用for循环。@Daniele没有更干净的方法吗?我需要插值来使用那个字符串,不适合印刷only@tommasoballardini更新为
MessageFormat.format
method我需要插值以使用该字符串,而不是用于打印only@tommasoballardini使用
MessageFormat.format
方法更新