Максимальный и минимальный метод Java - PullRequest
0 голосов
/ 15 ноября 2018

Эта программа должна находить максимальное, минимальное и среднее значение оценок.Пользователь вводит int inputGrade, и программа отображает букву.Предполагается, что для этого нужно столько студентов, сколько нужно.У меня проблемы с написанием метода, где он находит максимум и минимум.(да, я разговаривал со своим учителем, если кому-то интересно ...) Я вставил методы ниже (они не работают).Как и в ОБЩЕМ, кто-нибудь знает, как найти максимум и минимум набора введенных чисел?(без использования массивов, списков или каких-либо необычных импортов, кроме сканера) ** примечание, я обновил это много ...

import java.util.Scanner;
  public class GetLetterGrade
  {
  static int inputGrade; // input grade

   public static void main(String [] args)
  {
   Scanner reader = new Scanner(System.in); 


     int classAverage;
     int classMin; // class's minimum grade
     int classMax; // class's maximum grade

     while (inputGrade != -1) // while user is entering grades
  {

       System.out.println("Welcome to the grade calculator. \nPlease enter a 
       numeric grade.  After the last student in the class, enter a grade of 
       -1.");
       inputGrade = reader.nextInt();
       letterGrade(inputGrade); // calls letter grade method 
       findMaxAndMin();
        result();
   }

   }
   // find letter grade
   public static String letterGrade(int numGrade)
   {

   String gradeMessage = "";

   {

  if (numGrade >= 96 && numGrade <= 100) // if numeric grade is 96-100 then 
   it's A+
  {
    gradeMessage = "That's an A+.";
    result();
  // DOES THIS FOR GRADES A+ TO F, NOT SHOWN, too much to paste!
  }

  }
  }
     return gradeMessage;
  }

   public static int findCharGrade(int numGrade)
   {
      char letter;
      if (numGrade >= 90 && numGrade <= 100) // A
   {
       letter = 'A';

   }
       else if (numGrade >= 80 && numGrade < 90)  // B
  {
       letter = 'B';
  }
       else if (numGrade >= 70 && numGrade < 80)  // C
  {
       letter = 'C';

  }
       else if (numGrade >= 60 && numGrade < 70) // D
  {
       letter = 'D';
  }
       else if (numGrade < 60) // F
  {
       letter = 'F'; 
  }

  }




   // finds maximum and minimum grades
    public static int findMaxAndMin(int inputGrade)
    {

       int max = Math.max(inputGrade, max);
       int min = Math.min(inputGrade, min);

        if (inputGrade < max)
    {
          inputGrade = max;
          findCharGrade(inputGrade);
    }
       else if (inputGrade > min)
    {
          inputGrade = min;
          findCharGrade(inputGrade);
    }

     }
   public static void calcAverage(int sumOfGrades, int numOfStudents)
   {
   // something goes here

    }



   // finds results
   public static void result()
   {
     int min = findMaxAndMin(inputGrade);
     int max = findMaxAndMin(inputGrade);
     System.out.println("Please enter a numeric grade");
     int inputGrade = reader.nextInt();
     letterGrade(inputGrade);


     if (inputGrade == -1)
  {
    System.out.println("You entered " + numOfStudents + " students. Class 
    Average: " + average + " Class Minimum: " + min + " Class maximum: " + max 
    + " \nThanks for using the class grade calculator!");
  }

}

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

вот более простой способ сделать это без использования Lists или arrays

    double sum = 0;  // use double so that you do not do integer arithmetic
    int count = 0;
    int min = Integer.MAX_VALUE;  // set to very high value
    int max = Integer.MIN_VALUE;  // set to bery low value

    Scanner scan1  =  new Scanner(System.in);
    System.out.println("enter numbers (-1 to quit");

    while (scan1.hasNextInt()) {
        int i = scan1.nextInt();  // get the number (assuming only int value)
        if (i == -1) break;

        min = Math.min(i, min);
        max = Math.max(i, max);
        sum += i;
        count++;
    }

    if (count > 0) {
        System.out.println("min " + min);
        System.out.println("max " + max);
        System.out.println("avg " + sum / count);
    }

отказ от ответственности

Этот код не будет обрабатывать неправильный тип ввода, например Строки

редактировать

Если вы хотите, чтобы среднее значение было рассчитано отдельным методом, вы можете использовать метод, подобный

double calcAvg (double sum, int count) {
    return sum / count;
}

тогда это можно назвать

    if (count > 0) {
        System.out.println("min " + min);
        System.out.println("max " + max);
        System.out.println("avg " + calcAvg (sum, count));
    }
0 голосов
/ 22 ноября 2018

пример пакета;

import java.util.Scanner;

class Example {

public static void main(String[] args) {
    Scanner r = new Scanner(System.in);
    int m = 1, total = 0, max = 0, min = 100;
    double avg = 0;
    while (m <= 5) {
        System.out.print("Input marks " + m + " = ");
        int inp = r.nextInt();
        total += inp;
        m++;
        min=min<inp?min:inp;
        max=max<inp?inp:max;


    }
    avg = (double)(total) / 5;
    System.out.println("Total : " + total);
    System.out.println("Max : " + max);
     System.out.println("Min : " + min);
    System.out.println("Average : " + avg);

}

}

0 голосов
/ 15 ноября 2018

Вы можете (и должны) разделить вашу проблему на более мелкие методы. Я скину код, а ты его прочти и изучи. Признаюсь, я не обращал особого внимания на этот простой квест, но все же ... Вот вы:

import java.util.List;

public class Answer {

    public static void main(String[] args) {

        //test with some grades (integers)
        Answer answer = new Answer();
        List<Integer> someGrades = List.of(12, 66, 34, 96, 3, 77, 2);
        System.out.println("max = " + answer.findMaxGrade(someGrades));
        System.out.println("min = " + answer.findMinGrade(someGrades));
        System.out.println("avg = " + answer.findAverageGrade(someGrades));

    }

    private int findMaxGrade(List<Integer> grades) {
        int max = Integer.MIN_VALUE;
        for (int grade : grades) {
            if (grade > max) max = grade;
        }
        return max;
    }

    private int findMinGrade(List<Integer> grades) {
        int min = Integer.MAX_VALUE;
        for (int grade : grades) {
            if (grade < min) min = grade;
        }
        return min;
    }

    private double findAverageGrade(List<Integer> grades) {
        double average = 0;
        for (int grade : grades) {
            average += grade;
        }
        return average / grades.size();
    }
}
...