0

私は Java の初級コースに参加していますが、ユーザー入力からデータを抽出し、それを使用してユーザー入力の量に基づいて一連の成績を作成するのに問題があります。次に、そのデータセットを最高のものから最低のものまで整理し、平均化することを想定しています。これまでの私のコードは次のとおりです

    //import Scanner

import java.util.Scanner;

public class Looper {


  public static void main(String[] args) {

    //introduce integers
    int highest = 0;
    int lowest = 0;
    int count = 0;
    int grade = (int) (Math.random() * 100);
    int student;

    int total = 0;
    double average = 0;
    //introduce Scanner 
    Scanner input = new Scanner(System.in);

    //printout number of students
    System.out.println("Enter number of students");
    student = input.nextInt();
    //narrow amount of students 
    if (student <= 10) {
      System.out.println("Enter the grades of the students");
    }

    else if (student >= 11) {
      System.out.println("Too many Students");
    }
    //close off 0               
    while (student != 0) {
      System.out.println("Didn't enter students");
    }

    grade = input.nextInt();
    //connect student and grade         
    for (grade = 0; grade <= 100; grade++) {
      student = grade;
      if (grade > 100) {
        System.out.println("Must be between 0 and 100")
      } if (grade <= highest) {
        grade++;
      }
    }

    for (grade = 0; grade >= 0; grade++) {
      student = grade;
      if (grade < -1) {
        System.out.println(" Must be between 0 and 100");
      }
      else if (grade >= lowest) {
        grade++;
      }
      //   form total and average
      total = total + grade;
      grade++;
      {
        average = (double) total / grade;
        //printout highest, lowest, and average
        System.out.println("The highest is" + highest + "\n The lowest is" + lowest + "The     average is\n" + average);
      }
    }
  }
}
4

1 に答える 1

1

まず、括弧なしで ifs を使用すると、コードの可読性が低下します。次に、;afterSystem.out.println("Must be between 0 and 100")がなく、;while ループの後にあります。while (Student!= 0);{

変数はすべて、小文字で始まる必要があるときに大文字で始まります。

;この行の後に double があります。int Grade= (int) (Math.random() *100);;

コード内のコメントも意味をなさない....

//introduce scanner

//introduce integers
int highest = 0;
int lowest=0; 
int count=0;
int Grade= (int) (Math.random() *100);; 
int Student;

int Total=0;
double average= 0;
//print out number of students

Scanner input = new Scanner(System.in);

スキャナーはあなたのコメントよりもはるかに低く導入されています。生徒数を印刷せずに、生徒数を入力します...

申し訳ありませんが、このコードは混乱しています。どこから始めればよいかさえわかりません。

編集:元のコードにリファクタリングを行いました。これにより、正しい軌道に乗るはずです。

import java.util.Scanner;

public class Looper {

  public static void main(String[] args) {
    int highest = 100;
    int lowest = 0;
    int grade = 0;
    int students = 0;
    float total = 0;
    double average = 0;

    Scanner input = new Scanner(System.in);

    System.out.println("Enter number of students: ");
    students = input.nextInt();

    if (students <= 10) {
      System.out.println("Enter the grades of the students: ");



      // ADDED CODE
      for(int i = 0; i < students; i++) {
        do {
          grade = input.nextInt();

          if(grade >= 0 && grade <= 100) {
            System.out.println("Grade must be between 0 and 100");
          }
        } while(grade < 0 || grade > 100);

        if(grade > highest) {
          highest = grade;
        }
        if(grade < lowest) {
          lowest = grade;
        }

        total += grade;
      }

      average = (total/students);

      System.out.println("The highest is " + highest);
      System.out.println("The lowest is " + lowest);
      System.out.println("The average is " + average);
      // END ADDED CODE


    } else if (students >= 11) {
      System.out.println("Too many Students");
    }
  }
}
于 2013-07-03T11:29:49.630 に答える