java - 打印多个数组项的单个计数值

标签 java arrays for-loop counter

我有一个非常简单的问题,我猜它只是盯着我看,但我看不到它。我必须计算数组中某个名称出现的次数。我使用循环来做到这一点,因为我不允许使用类、 HashMap 等。所以我有 93 个名字,例如 Jake 出现了 5 次,我希望结果是:

       Jack - 5

相反,我的程序显示

       Jack - 5
       Jack - 5
       Jack - 5
       Jack - 5
       Jack - 5

我只想将其打印一次,这是我的循环:

for (int counter = 0; counter < name.length; counter++)
    {
        String n = (name[counter]);
        int count = 0;
        for (int i = 0; i < name.length; i++){
            if (name[i].equals(n))
                count++;
        }

        System.out.println(n + " - " + count);
    }

理想的输出应该是:

                  Jack - 5

我需要打印星号作为输出,所以我希望它说

                 Jack (5) ***** 

每个星号代表一个事件,我知道如何打印它们,并且我已将其放入我的代码中,但它显示

                ***** Jack(5) 

我想知道如何解决这个问题,有什么想法吗?

最佳答案

您将循环浏览列表中的每个名称并每次进行检查。因此,您检查了 Jack 这个名字 5 次,因此您得到了 5 个输出。

由于某种原因你不允许使用 HashMap,这应该可以解决它:

String name[] = new String[]{"jack", "jack", "jack", "james", "jack", "jack", "james"};
ArrayList<String> checkedNames = new ArrayList<String>();

for (int counter = 0; counter < name.length; counter++)
{
    String n = (name[counter]);
    if(!checkedNames.contains(n))
    {
        int count = 0;
        for (int i = 0; i < name.length; i++){
            if (name[i].equals(n))
                count++;
        }
        checkedNames.add(n);
        System.out.println(n + " - " + count);
    }

}

编辑:因为您不能使用ArrayList,但可以对数组进行排序:

    String name[] = new String[]{"jack", "jack", "jack", "jack", "jack", "james"};
    String lastName = "";

    Arrays.sort(name);

    for (int counter = 0; counter < name.length; counter++)
    {
        String n = (name[counter]);


        if(!lastName.equals(n))
        {
            int count = 0;
            for (int i = 0; i < name.length; i++){
                if (name[i].equals(n))
                    count++;
            }

            System.out.println(n + " - " + count);
        }
        lastName = n;
    }

第二次编辑:

首先,Arrays 是 Java 中内置的一个类,就像 String 一样:

http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html

其次,如果您希望它打印星号,请将 System.out.println 行更改为:

System.out.println(n + " (" + count + ")" + new String(new char[count]).replace("\0", "*"));

关于java - 打印多个数组项的单个计数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16064258/

相关文章:

xcode - Swift JSON for-in 循环

Python——重构后的程序返回不同的结果

java - Hibernate 4.3如何配置二级缓存

java - 如何将Java程序重写为Hadoop作业?

Javascript 循环遍历对象集合

c - 这些 C 外部定义之间有什么区别?

java - jquery ajax GET 上的 HTTP 状态 404(未找到)到 Spring Controller ?

java - 通过套接字通信读取数据时出错

javascript - 哈希数组上的 Handlebars JS

python - 从另一个数据框中计算 nunique