【问题标题】:Different counting for arrays [duplicate]数组的不同计数[重复]
【发布时间】:2013-04-15 15:53:02
【问题描述】:

如果我有 2 个并行数组。一种是short[],另一种是String[]。 short 有一系列标记。 短 [95, 96, 95, 99, 100]。字符串有学生的名字 [Mark, Steve, Emma, Rachael, Justin] 它们已经被声明并且是对应的。我知道如何按字母顺序和标记排序。问题要求我打印出学生获得成绩的时间的“*”。用户没有输入任何内容。例如:这将是输出。

100 = * (As only 1 person got a 100)
99 = *
96 = *
95 = **

我必须在没有任何用户输入的情况下获得该输出。 我有点想我知道该怎么做,但我很迷茫。我什至不知道如何开始。我所知道的是必须使用一个计数器,但这只有在用户输入一个标记时才有效。没有任何输入我不知道该怎么做。

【问题讨论】:

  • 您要生成histogram吗?
  • 是的@Kninnug 我想就是这样

标签: java arrays count counter


【解决方案1】:

假设 - 没有学生 = 没有

你的 2 个数组是

String [] students;

short [] marks.

创建第三个数组

int [] count = new int[101];


int i = 0;

for(i = 0; i < no; ++i)
    ++count[marks[i]];

count 数组将包含每个标记出现的次数 即 count[50] 将不包含获得 50 的学生。

你可以打印出来

for(int i = 0; i < no; ++i)
    System.out.println(i + " = " + count[i]);

【讨论】:

  • 第一个循环真的有必要吗?我以为 Java 会自动将 ints 初始化为零。
  • 我明白了,[101] 是干什么用的?
  • @Kninnug 来自 c++ 的习惯,已更新。
  • @user2278109 有 101 个可能的标记,用户可以获得 0、1、2 --- 100。试试代码看看。
  • 哦,我明白了!谢谢,只是java新手,所以对一切还是有点困惑
【解决方案2】:

使用一个数组,例如第 100 个索引对应等级 100,第 99 个索引对应等级 99,等等。这样,如果有人获得等级g,您可以只增加数组的第 g 个元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 2016-05-17
    • 1970-01-01
    相关资源
    最近更新 更多