阵列的挑战

时间:2016-12-01 04:37:42

标签: java arrays netbeans user-input

这就是我要做的事:
显示每个级别(R, 1, 2, 3, 4).

中的学生人数
Level R (mark < 50)     
Level 1 ( (mark >= 50) && (mark < 60) )    
Level 2 ( (mark >= 60) && (mark < 70) )     
Level 3 ( (mark >= 70) && (mark < 80) )    
Level 4 (mark >= 80). 

这就是我所拥有的:

int L0=0,L1=0,L2=0,L3=0,L4=0;
    int acceptmarks=0;
        acceptmarks=Integer.parseInt(marksinput.getText());
    for(int i=0; i < marks.size(); i++){
    if (acceptmarks<50){
        L0=L0+1;}
    else if ((acceptmarks>=50) && (acceptmarks<60)){
        L1=L1+1;}
    else if ((acceptmarks>=60) && (acceptmarks<70)){
        L2=L2+1;}
    else if ((acceptmarks>=70) && (acceptmarks < 80)){
        L3=L3+1;}
    else if ((acceptmarks>=80) && (acceptmarks < 100)){
        L4=L4+1;}}
    int[] level= new int [5];
    level[0]=L0;
    level[1]=L1;
    level[2]=L2;
    level[3]=L3;
    level[4]=L4;
        analyzeoutput.setText("Numbers at Level 4:" + level[4]+ "\nNumbers at Level 3:" + 
            level[3]+ "\nNumbers at Level 2:" + level[2]+ "\nNumbers at Level 1:" + level[1]+ "\nNumbers at Level R:" + level[0]);

我遇到的问题是它没有显示每个级别的正确学生人数。

这是发生的事情:
防爆。我输入了4个标记:45, 66, 84, 89.
正确的答案应该是R级中的 1分,2级中的1分和4级中的2分。但是我的程序只计算最后一个分数。因为,最后一个标记是89(第4级),它显示所有标记都是4级。我花了几个小时 任何帮助都非常感谢,并提前感谢您。

编辑:我想通了。我只需要在if语句中用marks.get(i)替换acceptmarks。

2 个答案:

答案 0 :(得分:1)

你应该移动这个陈述

acceptmarks=Integer.parseInt(marksinput.getText());
在for循环中

for(int i=0; i < marks.size(); i++){

并且不要忘记

L0=L0+1;
当写为

时,

是刀具

l0++; //camelCase for the name and using advantages of the language

答案 1 :(得分:1)

    int L0=0,L1=0,L2=0,L3=0,L4=0;
    List<Integer> marks = Arrays.asList(45, 66, 84, 89);
    for(int i = 0; i < marks.size(); i++){
        if (marks.get(i)<50){
            L0=L0+1;}
        else if ((marks.get(i)>=50) && (marks.get(i)<60)){
            L1=L1+1;}
        else if ((marks.get(i)>=60) && (marks.get(i)<70)){
            L2=L2+1;}
        else if ((marks.get(i)>=70) && (marks.get(i) < 80)){
            L3=L3+1;}
        else if ((marks.get(i)>=80) && (marks.get(i)< 100)){
            L4=L4+1;}}
    int[] level= new int [5];
    level[0]=L0;
    level[1]=L1;
    level[2]=L2;
    level[3]=L3;
    level[4]=L4;


    final JLabel analyzeoutput = new JLabel();
    analyzeoutput.setText("Numbers at Level 4:" + level[4]+ "\nNumbers at Level 3:" +
            level[3]+ "\nNumbers at Level 2:" + level[2]+ "\nNumbers at Level 1:" + level[1]+ "\nNumbers at Level R:" + level[0]);
    }

注意:如果您可以将“acceptmarks”中的所有输入都标记为数组。这将有效。

AcceptMarks是一个整数,因此它只包含您给出的最后一个输入。要么将AcceptMarks作为列表,要么使用标记作为数组,如代码片段所示。我正在使用标记,因为你正在循环标记。