有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:如何找到数组的最小值(用户输入)

到目前为止,这是我的代码:

public static void main(String[] args) 
{
    System.out.println("Please input numbers");
    Scanner myScan = new Scanner(System.in);

    String input = myScan.nextLine();
    String[] numbers = input.split(" ");
    int[] numbersInt = new int[numbers.length];


    int minNumber = numbersInt[0];

    for(int i = 0 ; i < numbers.length; i++)
    {
        numbersInt[i] = Integer.parseInt(numbers[i]);
    }

    for(int i = 1; i < numbers.length; i++)
    {
        if(numbersInt[i] < minNumber)
        {
            minNumber = numbersInt[i];
        }else if(minNumber < numbersInt[i])
        {
            minNumber = numbersInt[0];
        }
        }

        System.out.println(minNumber);

    }
    }

例如,如果我输入整数'20 15 60',我得到的数字“20”是最小值。我做错了什么?多谢各位


共 (3) 个答案

  1. # 1 楼答案

    Solution 1

    问题只针对两条线

    1-移动int minNumber = numbersInt[0](将其放在第一个for之后)

    2-删除第二个for中下面的片段

      else if(minNumber < numbersInt[i])
            {
    
              minNumber = numbersInt[0];
    
            }
    

    Finally, your code can be as follows

    public static void main(String[] args) {
    
            System.out.println("Please input numbers");
            Scanner myScan = new Scanner(System.in);
    
            String input = myScan.nextLine();
            String[] numbers = input.split(" ");
            int[] numbersInt = new int[numbers.length];
    
    
            for (int i = 0; i < numbers.length; i++) {
                numbersInt[i] = Integer.parseInt(numbers[i]);
            }
    
            //Changed
            int minNumber = numbersInt[0];
    
            for (int i = 1; i < numbers.length; i++) {
    
                if (numbersInt[i] < minNumber) {
                    minNumber = numbersInt[i];
                } 
                //Changed (deleted)
            }
    
            System.out.println(minNumber);
    
        }
    

    Solution 2

    我建议您在场景中使用此代码

      public static void main(String[] args) {
    
            System.out.println("Please enter numbers, if you wanna stop just enter non numeric input");
            Scanner scanner = new Scanner(System.in);
    
            //Get input numbers and add it to the list
            List<Integer> numberList = new ArrayList<Integer>();
            while (scanner.hasNextInt()) {
                numberList.add(scanner.nextInt());
            }
    
            //Get the minimum of numberList
            System.out.println("Min :" + Collections.min(numberList));
    
        }
    
  2. # 2 楼答案

    你的代码是正确的,但有一些错误。首先,移动“int minNumber=numbersInt[0];”第一个for循环之后的行。其次,从第二个for循环中删除else部分

    为了让你更好地理解我再次发布你的代码:)并进行修复

    public static void main(String[] args) {
            System.out.println("Please input numbers");
            Scanner myScan = new Scanner(System.in);
    
            String input = myScan.nextLine();
            String[] numbers = input.split(" ");
            int[] numbersInt = new int[numbers.length];
    
    
            for (int i = 0; i < numbers.length; i++) {
                numbersInt[i] = Integer.parseInt(numbers[i]);
            }
    
            int minNumber = numbersInt[0];
    
            for (int i = 1; i < numbers.length; i++) {
                if (numbersInt[i] < minNumber) {
                    minNumber = numbersInt[i];
                }
            }
    
            System.out.println(minNumber);
    
        }
    
  3. # 3 楼答案

    在解析整数之后,应该初始化minNumber。如果没有必要,也可以。所以这条线应该移动:

    int minNumber = numbersInt[0];
    

    所以你的代码是这样的:

    System.out.println("Please input numbers");
    Scanner myScan = new Scanner(System.in);
    
    String input = myScan.nextLine();
    String[] numbers = input.split(" ");
    int[] numbersInt = new int[numbers.length];
    
    for(int i = 0 ; i < numbers.length; i++)
    {
        numbersInt[i] = Integer.parseInt(numbers[i]);
    }
    int minNumber = numbersInt[0];
    for(int i = 1; i < numbers.length; i++)
    {
        if(numbersInt[i] < minNumber)
        {
            minNumber = numbersInt[i];
        }
    }
    System.out.println(minNumber);
    

    虽然这不是读取一行整数的真正方法。你可以这样做:

    Scanner myScan = new Scanner(System.in);
    System.out.println("How many numbers do you want to enter?");
    int n = myScan.nextInt();
    
    System.out.println("Please input numbers");
    
    int[] numbersInt = new int[n];
    for(int i = 0 ; i < n; i++)
    {
        numbersInt[i] = myScan.nextInt();
    }