我是一名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();
}
}
谢谢
答案 0 :(得分:22)
如果你确实需要创建一个包含X个惊叹号的字符串,那么这里有一种方法可以不重复连接:
char[] exmarks = new char[aantal];
Arrays.fill(exmarks, '!');
String exmarksString = new String(exmarks);
答案 1 :(得分:4)
您的程序不起作用,因为String.concat()不会更改字符串,但会返回 new 字符串。例如,“a”.concat(“b”)是“ab”。因此,您应该写output = output.concat("!")
而不是output.concat("!")
。
然而,这将是非常低效的,因为构建一串n个感叹号将花费O(n ^ 2)时间(在谷歌或维基百科上查找“大哦符号”,另请参阅Schlemiel the Painter's algorithm)。
查看StringBuilder
类的文档并使用它。它专为从零件构建字符串而设计。
答案 2 :(得分:4)
看起来你很亲密,汤姆。
首先,在Java中构建String
的常规方法是使用StringBuilder
类,如下所示:
StringBuilder buf = new StringBuilder(aantal);
while (aantal-- > 0)
buf.append('!');
return buf.toString();
然后,您需要在output
方法的范围内声明一个名为start()
的变量,并将printUitroeptekens()
方法的结果分配给该变量,如下所示:
String output = printUitroeptekens(in.nextInt());
out.printf("%s%n", output);
答案 3 :(得分:3)
您的程序应具有以下结构:
read number x
repeat this x times
print '!'
声明中没有任何内容要求你实际构建一个字符串。