java重复字符
Posted
技术标签:
【中文标题】java重复字符【英文标题】:java repeat character [duplicate] 【发布时间】:2011-01-19 08:36:46 【问题描述】:我是java初学者,请记住这一点。我必须编写一个程序来读取一个数字,然后显示那个数量的感叹号“!”。
这就是我所拥有的:
import java.util.Scanner;
import java.io.PrintStream;
class E_HerhaalKarakter1
PrintStream out;
E_HerhaalKarakter1 ()
out = new PrintStream(System.out);
String printUitroeptekens (int aantal)
String output = "!"
for (int i = 0; i <= aantal; i++)
output.concat("!");
return output;
void start ()
Scanner in = new Scanner(System.in);
out.printf("Hoeveel uitroeptekens wilt u weergeven?\n");
if(in.hasNext())
out.printf("baldbla");
printUitroeptekens(in.nextInt());
out.printf("%s",output);
public static void main (String[] argv)
new E_HerhaalKarakter1().start();
谢谢
【问题讨论】:
可能重复:***.com/questions/1235179/… 查看:Commons Lang StringUtils.repeat() 在英文论坛提问时请使用英文(即使是代码)。 确实至少保留了整个代码英文(所有标识符;类名、方法名、变量名)。消息可以用荷兰语保存,但最好添加英文注释以使其清晰。 【参考方案1】:如果您确实需要创建一个包含 X 个感叹号的字符串,那么这是一种无需重复连接的方法:
char[] exmarks = new char[aantal];
Arrays.fill(exmarks, '!');
String exmarksString = new String(exmarks);
【讨论】:
【参考方案2】:您的程序不起作用,因为 String.concat() 不会更改字符串,而是返回一个 new 字符串。例如,“a”.concat(“b”) 是“ab”。所以,你应该写output = output.concat("!")
而不是output.concat("!")
。
但是,这将非常低效,因为构建一串 n 个感叹号将花费 O(n^2) 时间(在 google 或 wikipedia 上查找“big oh notation”,另请参见 Schlemiel the Painter's algorithm)。
查看StringBuilder
类的文档并使用它。它是为从零件中构建字符串而设计的。
【讨论】:
如果效率是一个问题,那么您绝对应该注意,任何类型的连接都不需要解决这个问题。只需要 Omega(lg n) 内存。【参考方案3】:看起来你很亲密,汤姆。
首先,在 Java 中构建 String
的常规方法是使用 StringBuilder
类,如下所示:
StringBuilder buf = new StringBuilder(aantal);
while (aantal-- > 0)
buf.append('!');
return buf.toString();
然后,您需要在start()
方法的作用域内声明一个名为output
的变量,并将printUitroeptekens()
方法的结果赋给该变量,如下所示:
String output = printUitroeptekens(in.nextInt());
out.printf("%s%n", output);
【讨论】:
【参考方案4】:你的程序应该有这样的结构:
read number x
repeat this x times
print '!'
据我所知,声明中没有任何内容要求您实际构建字符串。
【讨论】:
这大概是一个简化的例子,方便我们理解问题。真正的问题可能要复杂得多。以上是关于java重复字符的主要内容,如果未能解决你的问题,请参考以下文章