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