繁体   English   中英

查找数组的最大值

[英]Finding Maximum Value of Array

我试图遍历我的数组以找到最大值并打印该值。 但是,没有任何内容被打印到控制台。 您能否看一下下面的代码,看看我做错了什么。

for (c = 0; c < n; c++) //loops through array until each index has had a value input by the user
  array[c] = in.nextInt();

maxInt = array[0];
minInt = array[0];

for (c = 0; c < n; c++) {
    if (array[c] > maxInt) {
        maxInt = array[c];
    }
    else {
        break;
    }
}
System.out.println("Max int is: " + maxInt);
}

编辑:

全班:

import java.util.Scanner;

public class MaxMinOfArray {
public static void main(String[] args) {
int c, n, search, array[];
int maxInt, minInt;

Scanner in = new Scanner(System.in);
System.out.println("Enter number of elements");
n = in.nextInt(); //asks user to specify array size
array = new int[n]; //creates array of specified array size

System.out.println("Enter " + n + " integers");

for (c = 0; c < n; c++) //loops through array until each index has had a value input by the user
array[c] = in.nextInt();

maxInt = array[0];
minInt = array[0];

for (c = 1; c < n; c++) {
if (array[c] > maxInt) {
    maxInt = array[c];
}
}
System.out.println("Max int is: " + maxInt);
}
}

去掉:

else {
        break;
    }

并从c=1开始

正如其他人指出的那样,您不想做

else {
    break;
}

这意味着一旦发现一个不大于当前最大值的数字,它将立即停止循环。 由于您是从列表中的第一项开始的,该项通常不比其本身大,因此您会立即break

即使将其更改为从c = 1开始,此代码也可能按书面形式工作的唯一情况是用户以升序输入数字。 (在那种情况下,进行这样的线性搜索将毫无意义,因为您可以从字面上找到数组中的最后一个项目,并且知道它将是最大的项目)。

另外,您应该检查array[c]是否小于for循环中的当前最小值; 完全没有理由在单独的循环中执行此操作。

请记住,如果要对未排序数组的最大值进行线性搜索,则必须始终遍历整个数组以确保不会遗漏更大的值。 例如,如果只搜索数组的一半,怎么知道未搜索的一半不包含最大值?

删除这部分代码。

else {
    break;
}

因为当c==0 ,该时间array[c] == maxInt 因此,它转到其他部分并中断您的for循环。

您的第二回路比较在每个元件array ,如果它是大于maxInt ,但maxInt刚刚被设置为第一个元素array 这将使循环的第一次迭代的条件失败,并在else块中执行break ,从而结束循环。

取出else块可解决此问题:

for (c = 0; c < n; ++c)
{
    if (array[c] > maxInt)
        maxInt = array[c];
}

或者:

for (c = 0; c < n; ++c)
    maxInt = Math.max(maxInt, array[c]);

至于没有出现控制台消息,请通过设置断点并逐步执行代码来确保代码正确执行(取决于您使用的IDE)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM