亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何刪除直方圖中的重復字符 [JAVA]

如何刪除直方圖中的重復字符 [JAVA]

偶然的你 2022-01-19 15:44:39
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:2b:2c:2d:1a:2b:2c:2在這里,我想停止循環,直到它計數 d = 1。但它再次打印相同的變量?我怎樣才能做到這一點?
查看完整描述

3 回答

?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

如果您不想打印已經打印的字符,則需要將其保留在 a 中的某個位置,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


查看完整回答
反對 回復 2022-01-19
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

從你已經做的開始,首先對數組進行排序然后嘗試計數


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


查看完整回答
反對 回復 2022-01-19
?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

不要在循環內打印


保存您的計數并在循環外打印。


做這樣的事情:


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);

  }

}


查看完整回答
反對 回復 2022-01-19
  • 3 回答
  • 0 關注
  • 196 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號