java重复字符

时间:2010-02-21 14:51:16

标签: java string for-loop printf

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

谢谢

4 个答案:

答案 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 '!'

声明中没有任何内容要求你实际构建一个字符串。