2013-04-15 60 views
0

如果我有2个并行阵列。一个是short []和其他的String []。短有一系列的标志。 短[95,96,95,99,100]。字符串有学生的名字[马克,史蒂夫,艾玛,瑞秋,贾斯汀] 他们已经被宣布和相应。我知道如何按字母顺序排序并根据标记进行排序。这个问题要求我在学生获得一个年级的时候打印出“*”。用户不会输入任何内容。例如:这将是输出。阵列的不同计数

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

我必须得到没有任何用户输入的输出。 我有点觉得我有一个想法如何做到这一点,但我很迷茫。我甚至不知道如何开始。我所知道的是必须使用计数器,但只有在用户输入标记时才能使用。没有任何输入,我不知道如何去做。

+0

你想生成[直方图](http://en.wikipedia.org/wiki/Histogram)吗? – Kninnug

+0

是@Kninnug我认为这就是它 – user2278109

回答

0

假设 - 没有学生=无

和你的2阵列

String [] students; 

short [] marks. 

创建第三个阵列

int [] count = new int[101]; 


int i = 0; 

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

计数阵列将包含没有时间每个标记出现 即算[50]将不含谁得到50

学生的你可以把它打印出来作为

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

第一个循环真的有必要吗?我认为Java初始化“int”自动为零。 – Kninnug

+0

我明白了,[101]是什么? – user2278109

+0

@Kninnug习惯从C++,更新。 – user93353

0

使用数组,使得100指数对应于100级,第99个索引对应于99年级,等等。这样,如果某人获得了等级g,则只需增加该数组的第g个元素即可。