1

我需要帮助,因为我的脑细胞无法发现这个程序有什么问题!这是代码

     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

4 回答 4

4

你初始化你的数组。然后给出默认值(每个 int 初始化为 0)

   int []myArray= new int[num];
   int minValue=myArray[0];

它将是 0

所以如果你输入正整数,没有比零更小的东西了

解决方案 首先用用户输入填充你的数组然后做

 int minValue=myArray[0];

或者使用 Integer.MIN_VALUE。

于 2012-05-31T19:20:35.140 回答
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

于 2012-05-31T19:22:56.980 回答
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];                

            } 
        } 
于 2012-05-31T19:23:57.607 回答
3
int []myArray= new int[num];

int 数组默认元素为 0

于 2012-05-31T19:18:09.347 回答