如何删除柱状图中的重复字符[JAVA]


class Mclass {
        public static void main(String[] args) {
        char[] a= {'a','b','c','d','a','b','c'};
        int count = 0;
        for (int i=0; i<a.length; i++)
        {
                  for(int j=0; j<a.length; j++)
                  {
                      if ( a[j] == a[i] )
                          count += 1;
                  }
                  System.out.println(a[i]+":"+count);
                  count = 0;
        }
    }

输出:

a:2 b:2 c:2 d:1 a:2 b:2 c:2

在这里,我想停止循环,直到它计数d=1。但它又打印了同一个变量?我该怎么做?

如果您不想打印已经打印的字符,您需要将其保存在Set中的某个位置,并仅在Set不包含该字符时打印,打印后将其添加到Set中,以便下次打印时不会打印。

把你的代码改成这个,

class Mclass {
    public static void main(String[] args) {
        Set<String> doneSet = new HashSet<String>();
        char[] a = { 'a', 'b', 'c', 'd', 'a', 'b', 'c' };
        int count = 0;
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a.length; j++) {
                if (a[j] == a[i])
                    count += 1;
            }
            if (!doneSet.contains(String.valueOf(a[i]))) {
                System.out.println(a[i] + ":" + count);
                doneSet.add(String.valueOf(a[i]));
            }
            count = 0;
        }
    }
}

这将按照您的意愿提供以下输出,

a:2
b:2
c:2
d:1

从您已经做的开始,首先对数组进行排序,然后尝试计数

import java.util.*;
class Mclass {
    public static void main(String[] args) {
        char[] a= {'a','b','c','d','a','b','c'};
        int count = 0;
        Arrays.sort(a);  // sort the array
        for (int i=0; i<a.length; i++)
        {
          for(int j=i; j<a.length; j++)
          {
              if ( a[j] == a[i] ){
                  count += 1;
                  continue;
              }          
              i=j-1;
              break;
          }
          System.out.println(a[i]+":"+count);
          count = 0;
        }
    }
}

输出

a:2
b:2
c:2
d:1

不要打印内部循环

保存您的计数并在循环外打印。

这样做:

public class Mclass {
    public static void main(String[] args) {
    char[] a= {'a','b','c','d','a','b','c'};
    int count = 0;
    Map<String,Integer> output = new HashMap<>();
    for (int i=0; i<a.length; i++)
    {
              for(int j=0; j<a.length; j++)
              {
                  if ( a[j] == a[i] )
                      count += 1;
              }
              output.put(Character.toString(a[i]), count);
              //System.out.println(a[i]+":"+count);
              count = 0;
    }
    System.out.println(output);
  }
}

最新更新