Java程序,用于计算给定标记范围内的学生数

时间:2015-12-23 17:18:27

标签: java

import java.util.Scanner;
class Marks {
    public static void main(String args[]) {
        int i,n,c1=0,c2=0,c3=0,c4=0,marks;
        int a[]=new int[50];
        Scanner obj=new Scanner(System.in);
        System.out.println("Enter the number of students");
        n=obj.nextInt();
        for(i=0;i<=n;i++) {
            System.out.println("Enter the marks of student "+(i+1));
            marks=obj.nextInt();

            if(a[i]>80 && a[i]<100) {
                c1++;
            } else if(a[i]>60 && a[i]<81) {
                c2++;
            } else if(a[i]>40 && a[i]<61) {
                c3++;
            } else {
                c4++;
            }

        }
        System.out.println("Students in the range of 81-100 : "+c1);
        System.out.println("Students in the range of 61-80 : "+c2);
        System.out.println("Students in the range of 41-60 : "+c3);
        System.out.println("Students i**strong text**n the range of 0-40 : "+c4);
    }
}

输出 - 无论输入的标记如何,程序只会增加并显示c4的值。我该怎么办?

2 个答案:

答案 0 :(得分:0)

在你的ifs:

之前指定一个[i]
  marks=obj.nextInt();
  a [i] = marks;
                if(a[i]>80 && a[i]<100)

答案 1 :(得分:0)

public static void main(String args[]) {
    Ranges ranges = new Ranges("Students", 1);
    ranges.addRangeLengths(new Integer[]{40, 20, 20, 20});
    int score;
    Scanner sc = new Scanner(System.in);
    while ((score = getScore(sc, "Enter scores (or -1 to stop): ")) != -1) {
        ranges.addScore(score);
    }
    System.out.println("\n" + ranges);
}

public static int getScore(Scanner sc, String message) {
    System.out.print(message);
    return (sc.hasNextInt()) ? sc.nextInt() : getScore(sc, "Please insert number: ");
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Ranges {

    private /*final*/ int startAt;
    private final String subject;
    private final List<Range> ranges = new ArrayList<>();

    public Ranges(String subject, int startAt) {
        this.subject = subject;
        this.startAt = startAt;
    }

    public void addRangeLength(int length) {
        int min = (ranges.size() > 0)
                ? ranges.get(ranges.size() - 1).max + 1
                : startAt;
        ranges.add(new Range(min, min + length - 1));
    }

    public void addRangeLengths(Integer... lengths) {
        addRangeLengths(Arrays.asList(lengths));
    }

    public void addRangeLengths(List<Integer> lengths) {
        lengths.stream().forEach(length -> addRangeLength(length));
    }

    public void addScore(int score) {
        for (Range range : ranges) {
            if (range.isInTheRange(score)) {
                range.increment();
                break;
            }
        }
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        ranges.stream().forEach(range
                -> sb.append(range).append("\n")
        );
        return sb.toString();
    }

    private class Range {

        final int min;
        final int max;
        int count;

        Range(int min, int max) {
            this.min = min;
            this.max = max;
        }

        void increment() {
            count++;
        }

        boolean isInTheRange(int score) {
            return score >= min && score <= max;
        }

        @Override
        public String toString() {
            StringBuilder sb = new StringBuilder();
            return sb.append(subject)
                    .append(" in the range of ")
                    .append(min).append('-').append(max).append(": ")
                    .append(count).toString();
        }
    }
}

<强>输出:

Enter scores: (or -1 to stop): 5
Enter scores: (or -1 to stop): 81
Enter scores: (or -1 to stop): 35
Enter scores: (or -1 to stop): 40
Enter scores: (or -1 to stop): 3
Enter scores: (or -1 to stop): 100
Enter scores: (or -1 to stop): 64
Enter scores: (or -1 to stop): 53
Enter scores: (or -1 to stop): -1

Students in the range of 1-40: 4
Students in the range of 41-60: 1
Students in the range of 61-80: 1
Students in the range of 81-100: 2