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

java-在输入的一组数字中查找最小值/最大值

仲孙献
2023-03-14

使用while循环,我必须执行以下操作:
使用变量“I”,计算输入的整数数量;使用变量“number”,表示输入的数字;使用变量“min”,表示迄今为止输入的最小数字;使用变量“max”,表示迄今为止输入的最大数字
用户将总共输入5个整数。

这是我的代码:

import java.util.Scanner;

public class MinMax
{
  public static void main(String[] args)
  {
   int i = 1;

   while (i <= 5)
   {
    int smallest = 0;
    int largest = 0;

    System.out.println("Enter number: ");
    Scanner input = new Scanner(System.in);
    int number = input.nextInt();

    System.out.println("Amount of numbers entered: " + i);

    System.out.println("Number entered: " + number);

    if (number < min)
    {
      min = number;
    }
    System.out.println("Smallest # so far: " + min);

    if (number > max)
    {
      max = number;
    }
    System.out.println("Largest # so far: " + max);


    i++;

   }
 }
}

当我运行这个时,“I”、“number”和“maximum”变量似乎都能正常工作。但是,“minimum”变量要记住,“minimum”的设置数是0。有没有办法解决这个问题,这样,如果我在第一个数字中输入数字10,在第二个数字中输入数字2,代码将显示最小值为“2”,而不是“0”?

谢啦!

共有2个答案

龚铭
2023-03-14

首先,需要将变量从循环中移出。

然后,您应该修复实现最小值/最大值时的经典错误:您应该

  • 在整数处开始最小值。最大值和整数处的最大值。最小\u值,或

我更喜欢第二种方法,因为它将显式初始化排除在代码之外:

int min = 0, max = 0, i = 0;
while (i < 5) {
    System.out.println("Enter number: "+(i+1));
    Scanner input = new Scanner(System.in);
    if (i == 0) {
        min = max = input;
    } else {
        ... // Do the conditions to determine if input is a new min or a max
    }
}
雍兴修
2023-03-14

将代码更改为

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

因此,当您寻找最小的数字时,它会将最大整数值与当前元素进行比较——当前元素肯定更小或相等。所以最小要么是正确的,要么是更新的。类比为最大。

顺便说一下,这两个必须在循环之外声明。

 类似资料:
  • 以下是任务的具体要求: “首先,启动NetBeans并关闭之前可能打开的所有项目(在顶部菜单“转到文件”)== 然后创建一个名为“MinMax”(不带引号)的新Java应用程序,该应用程序声明一个长度为5的双精度数组,并使用方法使用来自命令行的用户输入填充数组,并打印出数组中的max(最高)和min(最低)值。确定最大值和最小值的方法可能不使用Java中的任何内置排序方法。也就是说,您需要在这些方

  • 问题内容: 我正在尝试创建两种方法,一种找到对象数组中的最小值,另一种找到对象数组中第二个最小值。 我已经这样写了两个 我已经找到了如何找到最小的值,我只需要找到第二个最小的值,我不确定怎么做。 有任何想法吗?谢谢! 问题答案: 像这样的东西:

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

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

  • 问题内容: 我正在尝试在数组中找到数字的最小值,但并非总是能正常工作。这是我写的代码: 有人可以纠正我吗? 问题答案: 不需要外部循环,它只运行一次,并且无论如何您都不会使用。你为什么有它? 对于内部循环,您需要与最小值进行比较。现在,您正在将其与数组中的第一个元素(不一定是最小值)进行比较。 另外,您可以从1开始循环,因为您不需要与自身进行比较(它只分配给)

  • 给定一个非负整数数组,设计最简单的算法来找到最大大小的子数组,并将其加到最小的值。 我的想法是,因为它们是非负整数,所以和最小的数组总是单个单元数组,只有原始数组的最小值。如果我理解正确的话,它取决于什么具有更高的优先级,具有更高的长度或更小的值。然而,这个问题从来没有明确说明哪一个优先。 我在这个问题上是正确的,还是我遗漏了什么?