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

maxValueプリミティブ整数配列は常にゼロで埋められるため、との両方minValueが 0 であることを意味します。代わりに、これを試してください:

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

これらのInteger定数の説明については、API を参照してInteger.MAX_VALUEください。Integer.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 に答える