java重复字符

8 java string printf for-loop

我是一名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();
 }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Pau*_*ham 22

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

char[] exmarks = new char[aantal];
Arrays.fill(exmarks, '!');
String exmarksString = new String(exmarks);
Run Code Online (Sandbox Code Playgroud)


jkf*_*kff 4

您的程序无法工作,因为 String.concat() 不会更改字符串,而是返回一个字符串。例如,“a”.concat(“b”) 是“ab”。所以,你应该写output = output.concat("!")而不是output.concat("!").

然而,这会非常低效,因为构建一串 n 个感叹号将花费 O(n^2) 时间(在 google 或 wikipedia 上查找“big oh notation”,另请参阅Schlemiel the Painter 的算法)。

查看该类的文档StringBuilder并使用它。它被设计用于用零件构建琴弦。