问题是您的第二个输入显示为0,因为您将max2初始化为0,并且如果与负数进行比较(例如-54),则显示0是因为它的值较大。您可以尝试使用Interger.MIN.VALUE。
int max1=Integer.MIN.VALUE;
int max2=Integer.MIN.VALUE;
int max3=Integer.MIN.VALUE;
// Just for having values
int[] seq1 = {10,20,30,101,40,55,66,77,88,99};
int[] seq2 = {-56,-232};
int[] seq3 = {1,1,1};
for (int counter = 1; counter < seq1.length; counter++)
{
if (seq1[counter] > max1)
{
max1 = seq1[counter];
}
}
for (int counter = 1; counter < seq1.length; counter++)
{
if (seq2[counter] > max2)
{
max1 = seq2[counter];
}
}
for (int counter = 1; counter < seq1.length; counter++)
{
if (seq3[counter] > max2)
{
max3 = seq3[counter];
}
}
System.out.println(max1);
System.out.println(max2);
System.out.println(max3);
我希望它能帮上忙。
,
在将任何内容添加到数组之前,请将max变量初始化为每个数组的第一个元素。由于int数组中元素的默认值为0,因此max2初始化为0,根据定义,该值大于任何负数。
另外,第二个循环我从1开始,其他循环从0开始。
,
零的问题是您要使用第一个数组元素(即基元)来初始化max变量。 Java中的原始类型不接受NULL值,因此您要在for循环之前的max2中放入零,并且由于数组包含负值,因此值0始终大于负值,因此max2将始终包含0。 >
以下是您应使用的示例:
Scanner in = new Scanner(System.in);
int[] seq1 = new int [10];
int[] seq2 = new int [2];
int[] seq3 = new int [4];
int i;
Integer max1,max2,max3;
//SEQ1
max1=null;
for(i = 0; i < seq1.length; i++ ) {
seq1[i] = in.nextInt();
if (max1 == null || seq1[i] > max1) max1 = seq1[i];
}
//SEQ2
max2=null;
for(i = 1; i < seq2.length; i++) {
seq2[i] = in.nextInt();
if (max2 == null || seq2[i] > max2) max2 = seq2[i];
}
//SEQ3
max3=null;
for(i = 0; i < seq3.length; i++ ) {
seq3[i] = in.nextInt();
if (max3 == null || seq3[i] > max3) max3 = seq3[i];
}
System.out.println(max1);
System.out.println(-(max2));
System.out.println(max3);
,
您应该将所有最大值初始化为Integer.MIN_VALUE,然后删除第二个初始化(max2 = seq2 [0])。 seq2 [0]默认初始化为零。
另外,您的第二个循环应从0开始,而应从1开始。
这是这段代码的样子:
int max1 = Integer.MIN_VALUE;
int max2 = Integer.MIN_VALUE;
int max3 = Integer.MIN_VALUE;
//SEQ1
for(i = 0; i < seq1.length; i++ ) {
seq1[i] = in.nextInt();
if (seq1[i] > max1) max1 = seq1[i];
}
//SEQ2
for(i = 0; i < seq2.length; i++) {
seq2[i] = in.nextInt();
if (seq2[i] > max2) max2 = seq2[i];
}
//SEQ3
for(i = 0; i < seq3.length; i++ ) {
seq3[i] = in.nextInt();
if (seq3[i] > max3) max3 = seq3[i];
}
您正在使用什么IDE?您确实需要学习使用IDE进行调试,因为如果逐步执行此代码,该错误将立即跳到您的身上。如果您不使用IDE,我强烈建议您学习一个。 Eclipse是免费的,即使对于像这样的简单Java项目来说有些肿。否则,您可以在每次出现max3之后简单地放置System.out.println。
本文链接:https://www.f2er.com/3165812.html