Java 求数组的最大值

Java 求数组的最大值,java,loops,println,Java,Loops,Println,我试图在数组中循环查找最大值并打印该值。但是,没有向控制台打印任何内容。你能看看我下面的代码,看看我做错了什么吗 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++)

我试图在数组中循环查找最大值并打印该值。但是,没有向控制台打印任何内容。你能看看我下面的代码,看看我做错了什么吗

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);
}
for(c=0;cmaxInt){
maxInt=数组[c];
}
否则{
打破
}
}
System.out.println(“最大整数为:+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);
}
}
import java.util.Scanner;
公共类MaxMinOfArray{
公共静态void main(字符串[]args){
int c,n,搜索,数组[];
int maxInt,minInt;
扫描仪输入=新扫描仪(系统输入);
System.out.println(“输入元素数量”);
n=in.nextInt();//要求用户指定数组大小
array=new int[n];//创建指定数组大小的数组
System.out.println(“输入”+n+“整数”);
for(c=0;cmaxInt){
maxInt=数组[c];
}
}
System.out.println(“最大整数为:+maxInt”);
}
}
删除:

else {
        break;
    }
并从
c=1开始删除:

else {
        break;
    }

然后从
c=1

开始,正如其他人指出的,您不想这样做

else {
    break;
}
这意味着,一旦它找到一个不大于当前最大值的数字,它将停止循环。由于您从列表中的第一项开始,该项通常不大于其本身,因此可以立即中断

即使您将其更改为从
c=1
开始,该代码也只能在用户按升序输入数字的情况下才能正常工作。(在这种情况下,像这样进行线性搜索将毫无意义,因为您可以直接找到数组中的最后一项,并且知道它将是最大的项)

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


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

如其他人所述,您不想这样做

else {
    break;
}
这意味着,一旦它找到一个不大于当前最大值的数字,它将停止循环。由于您从列表中的第一项开始,该项通常不大于其本身,因此可以立即中断

即使您将其更改为从
c=1
开始,该代码也只能在用户按升序输入数字的情况下才能正常工作。(在这种情况下,像这样进行线性搜索将毫无意义,因为您可以直接找到数组中的最后一项,并且知道它将是最大的项)

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


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

删除这部分代码

else{
打破
}

因为当时当
c==0
array[c]==maxInt
。因此,它转到else部分,并中断
循环。

删除这部分代码

else{
打破
}

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

如果
数组中的每个元素大于
maxInt
,但
maxInt
刚刚被设置为
数组的第一个元素,则第二个循环将对其进行比较。在循环的第一次迭代中,执行else块中的
break
,从而结束循环

取出
else
块可修复此问题:

for (c = 0; c < n; ++c)
{
    if (array[c] > maxInt)
        maxInt = array[c];
}
(c=0;c { if(数组[c]>maxInt) maxInt=数组[c]; }
或者:

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

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

如果数组中的每个元素大于
maxInt
,则第二个循环将对其进行比较,但是
maxInt
刚刚被设置为
array
的第一个元素。在循环的第一次迭代中,执行else块中的
break
,从而结束循环

取出
else
块可修复此问题:

for (c = 0; c < n; ++c)
{
    if (array[c] > maxInt)
        maxInt = array[c];
}
(c=0;c { if(数组[c]>maxInt) maxInt=数组[c]; }
或者:

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

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

您的扫描仪定义正确吗?@Spartan123这很奇怪,因为它工作正常检查:…@Spartan123您能提供输入吗?你能显示运行时的图像吗?别担心,我错了,我指定了300个元素,但我在某个地方复制了值,没有突出显示