Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最大和最小方法java_Java_Max_Min - Fatal编程技术网

最大和最小方法java

最大和最小方法java,java,max,min,Java,Max,Min,这个程序应该找到等级的最大值、最小值和平均值。用户输入int inputGrade,程序显示其所在的字母。不管需要多少学生,都应该这样做。我在写找到最大值和最小值的方法时遇到困难。是的,如果有人想知道。。。我将这些方法粘贴到下面,它们不起作用。就像一般情况一样,有人知道如何找到一组输入数字的最大值和最小值吗?不使用数组、列表或扫描仪以外的任何异常导入**注意,我已经更新了很多 import java.util.Scanner; public class GetLetterGrade {

这个程序应该找到等级的最大值、最小值和平均值。用户输入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!");
  }

}

你可以也应该把你的问题分成更小的方法。 我会删除代码,你读并研究它。 我承认我没有太注意这个简单的任务,但仍然。。。 给你:

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();
    }
}

这里有一种更简单的方法,不使用列表或数组

免责声明

此代码不会处理错误类型的输入,例如字符串

编辑

如果您希望使用单独的方法计算平均值,可以使用以下方法

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));
    }
包装实例

导入java.util.Scanner

课例{

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);

}

}

他们不工作意味着什么?什么不起作用?你应该以另一种方式初始化max和min,这样函数就可以工作了,即max=int.min\u val,min=int.max\u val。同时反转if子句。你可以发布整个类吗?我们不知道inputGrade是什么。如果缩进有意义,您的代码将更容易阅读。谢谢您的回答,但我还没有在我的APCS类中介绍列表。不过我会尽量用这个@Janie,请随意问我其他问题。例如,你可以将分数输入int数组而不是列表。有没有办法不用列表或数组来完成此操作?@Janie,当然有!只需将methods参数更改为int[]grades。我以前从未使用过int[]。那是一个数组吗@zlakadwow我甚至不知道Math.min和Math.max的存在。非常有用thanks@Janie,如果您害怕使用Math.min,则可以使用if ipublic 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); }