java中的最小值不起作用

时间:2012-05-31 19:14:31

标签: java arrays loops for-loop

我需要帮助,因为我的脑细胞无法找到这个程序的错误! 这是代码

     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]);}
    }
  }

}

该程序执行评论中的内容,但即使我没有输入它,最小值也始终为零......我无法弄清楚问题是什么,所以我感谢您的帮助!

4 个答案:

答案 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];

意味着maxValueminValue都是0,因为原始整数数组总是用零填充自身。相反,你应该试试这个:

int maxValue=Integer.MIN_VALUE;
int minValue=Integer.MAX_VALUE;

有关这些Integer常量的一些说明,请查看API中的Integer.MAX_VALUEInteger.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