首页 > 解决方案 > 每次循环中的条件正确时,程序都会打印该语句

问题描述

我试图让用户输入他们的成绩,如果成绩高于 90,则将它们打印在一行中,低于 65 的将它们打印在一行中,如果在 65 到 90 之间将它们打印在一行中。但是,假设每次有一个90以上的成绩,它会打印“90以上”,然后当我只希望它打印一次声明时,为每个成绩评分。我知道我在条件内有它,所以每次满足条件时都会打印它,但是我应该把那行代码放在哪里,这样这个问题就不会发生。

import java.util.Scanner;
import java.util.ArrayList;


public class StudentApplication {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("How many courses did you take during the school year? : ");
        int takeCoursesNum = sc.nextInt();

        int grades[] = new int[takeCoursesNum]; // array number start "0" ~ ex) { [0], [1], [2] }

        for (int i = 0; i < takeCoursesNum; i++) {
            System.out.print("\nEnter your grade for that course : ");
            int grade = sc.nextInt();
            grades[i] = grade;
        }

        for (int i = 0; i < takeCoursesNum; i++) {
            if (grades[i] < 65) {
                System.out.println("\nGrades below 65 : " + grades[i]);// System.out.println : auto change line. no need \n.
            }

            if (grades[i] > 90) {
                System.out.println("Grades above 90 : " + grades[i]);
            }

            if (grades[i] > 65 && grades[i]<90) {
                System.out.println("Grades between 65 and 90: " + grades[i]);
            }
        }

    }

}

标签: javaarraysprinting

解决方案


您必须将数组单独循环三次,并且将标签 ( "Grades below 65") 排除在循环之外,因此它只会打印一次语句。最后使用System.out.print代替,System.out.println所以成绩将打印在同一行。

System.out.print("\nGrades below 65 : ");
for (int i = 0; i < takeCoursesNum; i++) {
    if (grades[i] < 65) {
        System.out.print(grades[i]);
    }
}

System.out.print("\nGrades below 90 : ");
for (int i = 0; i < takeCoursesNum; i++) {
    if (grades[i] > 90) {
        System.out.print(grades[i]);
    }
}

System.out.print("\nGrades between 65 and 90: ");
for (int i = 0; i < takeCoursesNum; i++) {
    if (grades[i] > 65 && grades[i]<90) {
        System.out.print(grades[i]);
    }
}

推荐阅读