我需要帮助,因为我的脑细胞无法找到这个程序的错误! 这是代码
import java.util.*;
public class student{
public static void main (String []args)
{
Scanner sc=new Scanner(System.in);
System.out.println("enter number elements"); //asking the user to enter the number of integer items
int num=sc.nextInt();
int []myArray= new int[num];
int maxValue=myArray[0];
int minValue=myArray[0];
int i;
for( i=0; i<myArray.length;i++)
{System.out.print("Enter element"+(i+1)); //asking the user to enter the items
myArray[i]=sc.nextInt();
}
for(i=0; i<myArray.length;i++)
{System.out.print(myArray[i]); //displaying the elements
}
System.out.println(" ");
for( i=myArray.length-1; i>=0;i--)
{System.out.print(myArray[i]); //displaying the elements in a backward order
}
System.out.println(" ");
for( i=0; i<myArray.length;i++)
{if(i%2==1)
System.out.println(myArray[i]); //displaying the elements in odd indices
}
for( i=0; i<myArray.length-1;i++)
{ if(myArray[i]>maxValue)
{
maxValue= myArray[i]; //finding the maximum
}
}
System.out.println(maxValue+" "+(i+1));
for( i=1; i<myArray.length-1;i++)
{ if( myArray[i]<minValue)
{minValue= myArray[i]; //finding the minimum
}
}
System.out.println(+minValue+" "+(i+1));
System.out.println(myArray[0]); //displaying first item
System.out.println( myArray[myArray.length-1]); //displaying last item
for( i=0; i<myArray.length;i++)
{if(i%2==0)
{ myArray[i]= myArray[i]*-1; //multiplying items in even indices by -1
System.out.print( myArray[i]);}
}
}
}
该程序执行评论中的内容,但即使我没有输入它,最小值也始终为零......我无法弄清楚问题是什么,所以我感谢您的帮助!
答案 0 :(得分:4)
您初始化数组。然后给出默认值(每个int初始化为0)
int []myArray= new int[num];
int minValue=myArray[0];
它将是0
因此,如果输入正整数
,则可以找到小于零的值<强>解决方案强> 首先使用用户输入填充数组 然后呢
int minValue=myArray[0];
或使用Integer.MIN_VALUE。
答案 1 :(得分:4)
当您查找一组值的最小值或最大值时,最好假设所有值都大于默认最大值(即将最大值设置为最小可能的整数),并且所有值都小于默认最小值(即将最小值设置为最大可能的整数)。
上述声音违反直觉,但是当您遍历数组时,如果您遇到的值大于“最大值”,则更新最大值。同样的想法适用于最小值(即如果您发现的值小于最小值)。由于两者都是从它们的逻辑极端开始,你将能够更容易地找到真正的最小值/最大值。
代码
int maxValue=myArray[0];
int minValue=myArray[0];
意味着maxValue
和minValue
都是0,因为原始整数数组总是用零填充自身。相反,你应该试试这个:
int maxValue=Integer.MIN_VALUE;
int minValue=Integer.MAX_VALUE;
有关这些Integer
常量的一些说明,请查看API中的Integer.MAX_VALUE
和Integer.MIN_VALUE
。
答案 2 :(得分:4)
int minValue=myArray[0];
因为这一行,你的minValue被设置为0.因此,只有当下面代码中的myArray [i]小于0时,才会在此方法中重置最小值。否则它将保持为0。
for( i=1; i<myArray.length-1;i++)
{
if( myArray[i]<minValue)
{
minValue= myArray[i];
}
}
答案 3 :(得分:3)
int []myArray= new int[num];
int数组默认元素为0