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 '!'
据我所知,声明中没有任何内容要求您实际构建字符串。