java重复字符

我是一名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(); } } 

谢谢

如果你确实需要创建一个包含X个感叹号的字符串,那么这里有一种方法可以不重复连接:

 char[] exmarks = new char[aantal]; Arrays.fill(exmarks, '!'); String exmarksString = new String(exmarks); 

您的程序不起作用,因为String.concat()不会更改字符串,但会返回一个字符串。 例如,“a”.concat(“b”)是“ab”。 因此,您应该编写output = output.concat("!")而不是output.concat("!")

然而,这将是非常低效的,因为构建一串n个感叹号将花费O(n ^ 2)时间(在谷歌或维基百科上查找“大哦符号”,另见Schlemiel the Painter的算法 )。

查看StringBuilder类的文档并使用它。 它设计用于从零件构建字符串。

看起来你很亲密,汤姆。

首先,在Java中构建String的常规方法是使用StringBuilder类,如下所示:

 StringBuilder buf = new StringBuilder(aantal); while (aantal-- > 0) buf.append('!'); return buf.toString(); 

然后,您需要在start()方法的范围内声明一个名为output的变量,并将printUitroeptekens()方法的结果printUitroeptekens()该变量,如下所示:

 String output = printUitroeptekens(in.nextInt()); out.printf("%s%n", output); 

你的程序应该具有以下结构:

 read number x repeat this x times print '!' 

据我所知,声明中没有任何内容要求您实际构建字符串。