我在这里要做的是根据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点(........................)
非常感谢:)答案 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
类有各种各样的方法来处理这类事情;例如leftPad
,rightPad
,center
和repeat
。调用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 );