2012-05-31 48 views
1

我需要幫助,因爲我的腦細胞找不到這個程序出了什麼問題! 下面的代碼java中的最小值將不起作用

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

} 

程序在做什麼的評論,但最小值總是爲零,即使我沒有進入它...我想不出有什麼問題,所以我會很感激你的幫助!

+2

注意:'for(i = 1; i tgoossens

+0

'int minValue = myArray [0];'我認爲他在開始時指定了 – evanwong

+0

也請調整這個代碼。用不同的方法計算最大值和最小值 – tgoossens

回答

4

初始化數組你。然後默認值給出(每INT初始化0)

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

這將是0

所以沒有什麼小可以大於零的發現,如果你在正整數中鍵入

解決方案 首先用用戶輸入填寫您的陣列 然後執行

int minValue=myArray[0]; 

或使用Integer.MIN_VALUE。

3
int []myArray= new int[num]; 

int數組默認元素爲0

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

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

      } 
     } 
+0

謝謝大家,把它清理乾淨,詳細說明給我......非常感謝:)! – aablah