3 回答

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
如果您不想打印已經(jīng)打印的字符,則需要將其保留在 a 中的某個(gè)位置,Set并且僅在Set不包含該字符時(shí)打印,并且在打印后將其添加到Set下次病房它不會(huì)不會(huì)被打印出來(lái)。
將您的代碼更改為此,
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;
}
}
}
這會(huì)按照您的意愿提供以下輸出,
a:2
b:2
c:2
d:1

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
從你已經(jīng)做的開(kāi)始,首先對(duì)數(shù)組進(jìn)行排序然后嘗試計(jì)數(shù)
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

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊
不要在循環(huán)內(nèi)打印
保存您的計(jì)數(shù)并在循環(huán)外打印。
做這樣的事情:
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);
}
}
添加回答
舉報(bào)