创建一个数组,然后使用while循环获取最小值[重复]

Posted

技术标签:

【中文标题】创建一个数组,然后使用while循环获取最小值[重复]【英文标题】:Creating an array and then get min using while loop [duplicate] 【发布时间】:2017-04-25 07:20:02 【问题描述】:
Scanner input = new Scanner(System.in);
int[] numbers = new int[10];

for (int i = 0; i < numbers.length; i++)

    System.out.println("Please enter number");
    numbers[i] = input.nextInt();


for (int i = 10 ; i > numbers.length ; i++)

    int min = numbers [i];
    if ( numbers [i] > min)
    numbers [i] = input.nextInt();

System.out.println("the min values is " + min  );

我停在这里..请帮助 我想从用户的输入中计算最小值

【问题讨论】:

为什么要为最小值创建一个数组?根据定义,只有一个最小值。 一定要用数组吗?您可以只取输入值的最小值。 您的循环不一致,这可能是您困惑的一部分。永远不会进入第二个循环。 ...请在发布之前修复您的编译器错误。 我必须使用数组和 for while :) 【参考方案1】:

您不必使用 2 个for 循环。你甚至不需要一个数组。看看:

import java.util.*;

public class Main 
    public static void main (String[] args) 
        Scanner input = new Scanner(System.in);
        int min = Integer.MAX_VALUE;

        for (int i = 0; i < 10; i++) 
            System.out.println("Please enter number");
            int number = input.nextInt();

            if (number < min) 
                min = number;
            
        

        System.out.println("the min values is " + min);
    

【讨论】:

【参考方案2】:

你可以做最少 10 个输入

Scanner input = new Scanner(System.in);
int min = InStream.range(0, 10)
                  .peek(i -> System.out.println("Please enter number"))
                  .map(i -> input.nextInt())
                  .min();
System.out.println("the min values is " + min);

你的代码有什么问题

for (int i = 10 ; i > numbers.length ; i++)

这行不通,因为最后一个索引是 [9] 而不是 [10] 而且你是递增而不是递减,你需要类似的东西

for (int i = numbers.length-1 ; i >= 0 ; i--)

您将能够在调试器中看到这一点,或者通过阅读诸如ArrayIndexOutOfBoundException: 10 之类的错误消息

【讨论】:

是的,它可以工作并且可以完成工作,但是如果 OP 在简单的 for 循环方面遇到问题,我认为您的回答对他没有任何意义。 @TDG 我怀疑使用调试器或读取错误消息是其他一些没有任何意义的东西。 我在这里学习.. @mo7al876我的任何提示是,当您收到错误消息时,请阅读它。如果您不知道这意味着什么,请在 Google 上搜索或至少将其发布在问题中。 @mo7al876any 我已经为您的代码添加了最简单的修复方法。【参考方案3】:

首先你需要了解很多事情你的代码是错误的。

方法一:

Scanner input = new Scanner(System.in);
int[] numbers = new int[10];

for (int i = 0; i < numbers.length; i++)

    System.out.println("Please enter number");
    numbers[i] = input.nextInt();

int min = numbers [0]; // Need to initialize it here outside the loop
for (int i = 1 ; i < numbers.length ; i++) // Need to count from 2nd element to the last

    if ( numbers [i] < min) // changing condition if number is less than min
         min = numbers [i]; // setting min to that number

System.out.println("the min values is " + min  );

方法 2: 在这里,我们在用户输入值时检查最小值。

Scanner input = new Scanner(System.in);
int[] numbers = new int[10];
boolean flagForMin = true;
int min;
for (int i = 0; i < numbers.length; i++)

    System.out.println("Please enter number");
    numbers[i] = input.nextInt();
    if(flagForMin) 
        min=numbers[i];
        flagForMin=false;
     else 
         if ( numbers [i] < min) 
            min = numbers [i];
    

System.out.println("the min values is " + min  );

这些是使用 for 循环方法,您可以通过在循环之前初始化并在循环的最后一个语句中递增计数器来将循环更改为 while。

EG:

Scanner input = new Scanner(System.in);
int[] numbers = new int[10];
boolean flagForMin = true;
int min;
int i = 0;
while( i < numbers.length)

    System.out.println("Please enter number");
    numbers[i] = input.nextInt();
    if(flagForMin) 
        min=numbers[i];
        flagForMin=false;
     else 
         if ( numbers [i] < min) 
            min = numbers [i];
    
    i++;

System.out.println("the min values is " + min  );

【讨论】:

谢谢你救了我

以上是关于创建一个数组,然后使用while循环获取最小值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从双数组中获取最小值不起作用

获取二维数组中某一列的最小值

如何在while循环中找到最大值和最小值 - c

*使用while循环遍历数组创建索引和自增索引值

ios 快速获取数组中的最大值、最小值

java通过数组值怎样获取数组下标