java重复字符

Posted

技术标签:

【中文标题】java重复字符【英文标题】:java repeat character [duplicate] 【发布时间】:2011-01-19 08:36:46 【问题描述】:

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

谢谢

【问题讨论】:

可能重复:***.com/questions/1235179/… 查看:Commons Lang StringUtils.repeat() 在英文论坛提问时请使用英文(即使是代码)。 确实至少保留了整个代码英文(所有标识符;类名、方法名、变量名)。消息可以用荷兰语保存,但最好添加英文注释以使其清晰。 【参考方案1】:

如果您确实需要创建一个包含 X 个感叹号的字符串,那么这是一种无需重复连接的方法:

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

【讨论】:

【参考方案2】:

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

但是,这将非常低效,因为构建一串 n 个感叹号将花费 O(n^2) 时间(在 google 或 wikipedia 上查找“big oh notation”,另请参见 Schlemiel the Painter's algorithm)。

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

【讨论】:

如果效率是一个问题,那么您绝对应该注意,任何类型的连接都不需要解决这个问题。只需要 Omega(lg n) 内存。【参考方案3】:

看起来你很亲密,汤姆。

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

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

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

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

【讨论】:

【参考方案4】:

你的程序应该有这样的结构:

read number x 
repeat this x times  
  print '!'

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

【讨论】:

这大概是一个简化的例子,方便我们理解问题。真正的问题可能要复杂得多。

以上是关于java重复字符的主要内容,如果未能解决你的问题,请参考以下文章

java 生成不重复字符串

java去除重复字符串的问题?

java字符串里有两个重复字符我想删掉其中一个

java去除字符串中重复不重复消除重复后字符

怎么去掉字符串中重复出现的字符

java中去掉字符串数组中重复的字符串(不改变原有顺序)并计数(不同的字符串重复了多少次)