0

配列に名前のリストがあり、冗長性があります。印刷する一意の名前のみを取得できましたが、最初の行を印刷し、印刷をスキップする方法が必要ですが、冗長性が何度もあり、次の名前を印刷し続けます (すべての冗長なインスタンスは常に隣り合っていました)。これまでのところ、その部分について私が持っているものは次のとおりです。

int x = 1;
int skipCount = 0;
while (x<i){
  if (titles[x].length() == titles[x-1].length()){
   //do nothing 
    skipCount++;
  }
  else{
    System.out.printf("%s\n", titles[x]);
  }
  x++;
}

基本的に、else ステートメントを 'skipCount' 回スキップしてから、もう一度開始するにはどうすればよいでしょうか。私はこれについてあまり発見しておらず、比較的Javaに慣れていません。

4

1 に答える 1

2

を使用しないのはなぜSetですか?;-)

final Set<String> set = new HashSet<>(Arrays.asList(titles));
for (final String title : set) {
  /* title is unique */
  System.out.println(title);
}

いくつかの変更には、ループ内の配列内の位置を手動で追跡する代わりに、より明確な ではなく を使用したり、println強化されたloopを使用したりすることが含まれます。printf("%s\n", ...)for

正直なところ、最初はforSet<String>の代わりにa を使用することを検討するかもしれません。String[]titles

于 2012-08-20T21:52:23.793 に答える