基于int值的字符串

时间:2010-11-10 00:19:16

标签: java integer while-loop

我在这里要做的是根据int的值创建一个字符串。

我知道我可以通过length()方法基于刺痛创建一个in的谷,但是想知道如何做相反的事情。

例如我有一个30的int,使用该int我想基于该int创建30个点并将其放入println

 {


     while (wordlegnth1 + wordlegnth2 < LINELENGTH)

     {

         dots++;
         wordlegnth1++;

     }

     System.out.println (word1 + dots + word2);
   }

目前,println执行的操作是打印输入的2个单词,基于输入的2个单词的int值,例如stack24overflow

基本上我想做的是将24从int变为24点(........................)

非常感谢:)

4 个答案:

答案 0 :(得分:2)

这是一个特殊情况,想要repeat a string(或者一个角色)这么多次。

然而,有一个简单的解决方案,只需循环输出一段时间dots并将其直接打印到屏幕上:

System.out.print(word1);
for(int d = 0; d < dots; d++){
    System.out.print(".");
}
System.out.println(word2);

或者,您可以先形成一个字符串(使用StringBuilder),然后输出它:

StringBuilder sb = new StringBuilder(dots);
for(int d = 0; d < dots; d++){
    sb.append('.');
}
System.out.println(word1 + sb + word2);

请注意,StringBuilder的容量已初始化为dots

答案 1 :(得分:1)

有很多方法可以做到这一点。

这是一个便宜而简单的,虽然不是很一般:

    static final String manyDots = "...........................................";
    ...
    dots = manyDots.substring(0, nosDots);  // if nosDots <= manyDots.length()

这是一个更通用的版本:

    char[] dotChars = new char[nosDots];
    Arrays.fill(dotChars, '.');    
    dots = new String(dotChars);

......或多或少等同于:

    StringBuilder sb = new StringBuilder(nosDots);
    for (int i = 0; i < nosDots; i++) {
        sb.append('.');
    }
    dots = sb.toString();

Apache Commons StringUtils类有各种各样的方法来处理这类事情;例如leftPadrightPadcenterrepeat。调用StringUtils.repeat(".", nosDots)将完全按照您的要求进行操作。

最后,String.format()方法和Formatter类以更高级别的方式执行此类操作。

答案 2 :(得分:1)

int x - 30;
String dots = "";
for (int i = 0; i < x; i++){
     dots += "."; 
}
System.out.println(dots);

我正在做的是获取int值并循环多次。然后+=运算符连接点变量。例如 "." + "." = ".."

答案 3 :(得分:1)

char[] letters = new char[ 30 ];
Arrays.fill(letters, '.');
String s = new String( letters );

System.out.println( s );