【问题标题】:Issue with java array not identifying maximum numberjava数组无法识别最大数量的问题
【发布时间】:2021-02-14 21:29:41
【问题描述】:

此代码已完全完成。我遇到了一个问题,即选择了最大数量并将其打印为最大值之前的数字。我似乎无法弄清楚如何让程序打印出实际的最大值。为了澄清起见,我不是在寻找作业的答案,因为代码已经完成了 99.9%,我只需要在这个问题上得到帮助。 代码如下:

package Zivkovic7;

import java.util.Arrays;
import java.util.Random;

public class Test {
    private static Random rand = new Random();
    public static void main(String[] args) {
        int[] randomEight = new int[8];

        for (int i = 0; i < 8; i++) {
            //Get a random number between 50 and 100
            randomEight[i] = rand.nextInt(51) + 50;
        }
        int[] extremeValues = sortArray(randomEight);
        System.out.println("The lowest element is " + extremeValues[0]);
        System.out.println("The highest element is " + extremeValues[1]);
        
        int sum = 0;
        int oddCount = 0;
        int evenCount = 0;
        System.out.println("\nHere is the array: ");
        for (int i = 0; i < randomEight.length; i++) {
            System.out.print(randomEight[i] + " ");
            if (randomEight[i] % 2 == 0) {
                evenCount++;
            } else {
                oddCount++;
            }
            sum += randomEight[i];
        }
        System.out.println("\nEvens: " + evenCount);
        System.out.println("\nOdds: " + oddCount);
        System.out.println("\nSum of all elements : " + sum);
    }

    public static int[] sortArray(int[] input) {
        int extremeVal[] = new int[2];
        extremeVal[0] = input[0]; /* Minimum */
        extremeVal[1] = input[1]; /* Maximum */
        /*
         * Bubble Sort Algorithm
         * */
        int n = input.length;
        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - i - 1; j++) {
                if (input[j] > input[j + 1]) {
                    int temp = input[j];
                    input[j] = input[j + 1];
                    input[j + 1] = temp;
                }
            }
            /* Finding minimum */
            if (extremeVal[0] > input[i]) {
                extremeVal[0] = input[i];
            }
            /* Finding maximum */
            if (extremeVal[1] < input[i]) {
                extremeVal[1] = input[i];
            }
        }
        return extremeVal;
    }
}

对不起,如果有什么看起来很奇怪,这是我第一次发布堆栈溢出。另外,如果需要更多信息,我可以及时提供。

【问题讨论】:

  • 这也是输出的内容,因为我无法在这里编译:最低元素是 60 最高元素是 88 这是数组:56 59 60 61 66 73 88 99 事件数:4赔率:4 所有元素的总和:562
  • 您可以编辑您的问题以添加这些详细信息,以免遗漏它们:-)

标签: java arrays


【解决方案1】:

您不需要在每次迭代中捕获最小值和最大值。等待排序结束。 你失败了,因为最大值总是 n-2(第二个最大值)

这可能会有所帮助。用这些行更改代码的结尾。

//    /* Finding minimum */
//    if (extremeVal[0] > input[i]) {
//        extremeVal[0] = input[i];
//    }
//    /* Finding maximum */
//    if (extremeVal[1] < input[i]) {
//        extremeVal[1] = input[i];
//    }
}
extremeVal[0] = input[0];
extremeVal[1] = input[n-1];
return extremeVal;

【讨论】:

  • 天哪,谢谢!这实际上解决了我刚刚遇到的另一个问题,即最小值并不总是正确识别。顺便说一句,我讨厌 Java,并且后悔把它当作一门全在线课程。这是一种史前语言的混乱,绝对需要一位优秀的讲师来教授内容。 Python 就是它的所在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
  • 2015-02-17
  • 1970-01-01
  • 2018-11-12
  • 2023-03-14
  • 2013-12-06
相关资源
最近更新 更多