当前位置: 首页 > 知识库问答 >
问题:

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

孔城
2023-03-14

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

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

//输出

输入学生人数:4

为学生1输入年级:

2个

输入学生2的年级:

1.

为学生3输入年级:

2个

输入学生4的年级:

3.

平均值是2.00

最低限度是:2

最大值为:3

共有3个答案

蓟俊杰
2023-03-14
if (largest < items[i])
largest = items[i]
else if (smallest > items[i])
smallest = items[i]

此外,最小的第一个值应为其中一个项目,因为任何等级都不能小于0

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

闽朝
2023-03-14

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

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();
  }
}
漆雕彬彬
2023-03-14

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

if(largest < items[i])
{
    largest = items[i];
} 
if(smallest > items[i])
{
    smallest = items[i];
} 

此外,您正在初始化最小的最大的项中的第一个元素,由于此时项数组为空,因此该元素将默认为0。尝试将“最大”初始化为可能的最小等级,并将“最小”初始化为可能的最大等级,就像这样(当前使用“最小”和“最大”整数值),

int largest=Integer.MIN_VALUE,smallest=INTEGER.MAX_VALUE;

这样做的原因是你永远找不到小于0的分数,因为这是你之前得到的,最小的分数总是0。

 类似资料:
  • 我无法使此程序正确运行。我所有的答案,最小值,最大值,平均值都是零。我知道我在开始时将它们初始化为零,但它们应该在整个代码中都改变吗? } 输出:输入数字: 2个 您输入:2 最大值和最小值为0 输入第二个数字 3. 您输入:3 最大值和最小值为0

  • 问题内容: 我正在寻找python中整数的最小值和最大值。例如,在Java中,我们有和。python中是否有类似的东西? 问题答案: Python 3 在Python 3中,此问题不适用。普通int类型是无界的。 但是,你实际上可能正在寻找有关当前解释器的字长的信息,在大多数情况下,该信息将与机器的字长相同。该信息在Python 3中仍以形式提供,这是一个有符号的单词可以表示的最大值。等效地,它是

  • 主要内容:普通算法,分治算法程序中,我们经常使用数组(列表)存储给定的线性序列(例如 {1,2,3,4}),那么如何查找数组(序列)中的最大值或者最小值呢? 查找数组(序列)中最大值或最小值的算法有很多,接下来我们以 {3,7,2,1} 序列为例讲解两种查找最值的算法,一种是普通算法,另一种是借助 分治算法解决。 普通算法 普通算法的解决思路是:创建两个变量 max 和 min 分别记录数组中的最大值和最小值,它们的初始值都

  • 计算newArr数组所有对象中arr二维数组,比较后返回其中的[[最小值,最小值],[最大值,最大值]]; 要这种结果[[39.867638888888884, 115.39333333333333], [50.97152777777777, 120.31527777777778]]

  • 我刚刚开始在HackerRank上练习,以提高我的编码技巧。我主要使用Java作为我的首选语言。我已经得到了这个问题,我已经尽力给出了解决方案,但没有清除所有的测试用例。我已经清除了15个测试用例中的5个,但仍有10个需要完成。那些在hackerrank上的人可以通过以下链接看到这个问题:最小-最大和 无论如何,我给出了这个问题的简要描述: 问题陈述 给定五个正整数,通过将五个整数中的恰好四个求和

  • 问题内容: 我的代码没有给出错误,但是没有显示最小值和最大值。代码是: 我是否需要system.out.println()来显示它,否则返回应该起作用吗? 问题答案: 您正在调用方法,但不使用返回的值。