Java 使用单个低位数字时,最小值和最大值不能正常工作

Java 使用单个低位数字时,最小值和最大值不能正常工作,java,arrays,max,min,Java,Arrays,Max,Min,我正在根据用户输入设置数组,然后尝试查找最小值和最大值。但它似乎只适合查找最大值而不是最小值 import java.util.Scanner; public class GradeBookKeeper { public static void main(String arg[]) { int numItems; int[] items; double sum=0; Scanner scan= new Scanner(System.in); System.out.pri

我正在根据用户输入设置数组,然后尝试查找最小值和最大值。但它似乎只适合查找最大值而不是最小值

import java.util.Scanner;
public class GradeBookKeeper 
{
  public static void main(String arg[])
{
  int numItems;
  int[] items;
  double sum=0;
  Scanner scan= new Scanner(System.in);
  System.out.println("Enter the number of students: ");
  numItems=scan.nextInt();
  items=new int [numItems];
  int largest=items[0],smallest=items[0];
  for (int i = 0 ; i < items.length; i++ )
  {
      System.out.println("Enter the grade for student "+(i+1)+":");
      items[i] = scan.nextInt();
      sum = sum + items[i];
      if(largest < items[i])
      {
          largest = items[i];
      } 
      else 
      {
          smallest = items[i];
      } 
  }
  System.out.printf("The average is "+"%.2f\n",sum/items.length);
  System.out.println("The minimum is: "+smallest);
  System.out.println("The maximum is: "+largest);
  scan.close();
}
}
import java.util.Scanner;
公班簿记员
{
公共静态void main(字符串arg[])
{
int numItems;
int[]项;
双和=0;
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入学生人数:”);
numItems=scan.nextInt();
项目=新整数[numItems];
int最大=项目[0],最小=项目[0];
对于(int i=0;i
//输出

输入学生人数: 四,

输入学生1的成绩:

二,

输入学生2的成绩:

一,

输入学生3的成绩:

二,

输入学生4的成绩:

三,

平均值是2.00

最低限额为:2


最大值为:3

问题在于,当您在遍历items数组时未找到新的最大元素时,您仅设置了
最小值。因此,将其更改为另一个if语句,而不是
else
,以查看您迭代的项是否小于当前的最小项,如下所示:

if(largest < items[i])
{
    largest = items[i];
} 
if(smallest > items[i])
{
    smallest = items[i];
} 
这样做的原因是你永远找不到小于0的分数,因为这是你以前得到的分数,最小的分数总是0。

if(最大if (largest < items[i])
largest = items[i]
else if (smallest > items[i])
smallest = items[i]
最大=项目[i] else if(最小>项[i]) 最小=项目[i]
此外,最小值的第一个值应为其中一项,因为任何等级都不能小于0

这应该行得通,
我希望你能理解

我在这里只是为了一个替代版本。它的工作方式是对数组进行排序(从最低到最高),然后将最低作为最小值,将最高作为最大值

import java.util.Arrays;
import java.util.Scanner;

public class GradeBookKeeper
{
 public static void main(String[] arg)
  {
    Scanner scan= new Scanner(System.in);

    int[] items;
    double sum=0;
    int numItems,largest,smallest;

    System.out.print("Enter the number of students:  ");
    numItems=scan.nextInt();
    items=new int [numItems];
    largest=smallest=items[0];

    for(int i=0;i<items.length;i++)
    {
        System.out.print("Enter the grade for student "+(i+1)+": ");
        items[i] = scan.nextInt();
        sum+=items[i];

    }
    for (int i = 0; i < items.length; i++) {
        Arrays.sort(items);
        largest=items[items.length-1];
        smallest=items[0];
    }


    System.out.printf("The average is "+"%.2f\n",sum/items.length);
    System.out.println("The minimum is: "+smallest);
    System.out.println("The maximum is: "+largest);
    scan.close();
  }
}
导入java.util.array;
导入java.util.Scanner;
公班簿记员
{
公共静态void main(字符串[]arg)
{
扫描仪扫描=新扫描仪(System.in);
int[]项;
双和=0;
int numItems,最大,最小;
System.out.print(“输入学生人数:”);
numItems=scan.nextInt();
项目=新整数[numItems];
最大=最小=项目[0];

对于(inti=0;iwhy你甚至需要一个数组?它是硬件的一部分,用户给数组一个长度,然后用户输入和硬件一样多的元素length@redsky没问题,如果你觉得它有帮助,那么请考虑投票或接受答案。祝好运编码!
import java.util.Arrays;
import java.util.Scanner;

public class GradeBookKeeper
{
 public static void main(String[] arg)
  {
    Scanner scan= new Scanner(System.in);

    int[] items;
    double sum=0;
    int numItems,largest,smallest;

    System.out.print("Enter the number of students:  ");
    numItems=scan.nextInt();
    items=new int [numItems];
    largest=smallest=items[0];

    for(int i=0;i<items.length;i++)
    {
        System.out.print("Enter the grade for student "+(i+1)+": ");
        items[i] = scan.nextInt();
        sum+=items[i];

    }
    for (int i = 0; i < items.length; i++) {
        Arrays.sort(items);
        largest=items[items.length-1];
        smallest=items[0];
    }


    System.out.printf("The average is "+"%.2f\n",sum/items.length);
    System.out.println("The minimum is: "+smallest);
    System.out.println("The maximum is: "+largest);
    scan.close();
  }
}