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
的值。我该怎么办?
答案 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