2012-05-31 2 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

Вы инициализировать массив вам. И тогда значения по умолчанию приводятся (каждый ИНТ инициализируется 0)

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

будет 0

так ничего меньше не может быть найден, чем ноль, если вы наберете в целых положительных

Решение Во-первых наполнит ваш массив с пользовательским вводом ТОГДА сделать

int minValue=myArray[0]; 

Или используйте Integer.MIN_VALUE.

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

целочисленный массив элементов по умолчанию в 0

4

Когда вы переходите на поиск минимального или максимального набора значений, лучше предположить, что все значения будут больше максимального значения по умолчанию (т. Е. Установите максимальное значение максимально возможного числа) и что все значения будут меньше минимального значения по умолчанию (т. е. установите минимальное значение как наибольшее возможное целое число).

Вышеупомянутые звуки противоречат друг другу, но по мере прохождения по массиву, если вы встретите значение «больше», чем максимальное, вы обновите максимальное значение. Эта же идея применяется к минимуму (т. Е. Если вы находите значение меньше вашего минимума). Поскольку оба они начнут с их логических крайностей, вы сможете найти истинный минимум/максимум легче.

Код

int maxValue=myArray[0]; 
int minValue=myArray[0]; 

предполагает, что оба maxValue и minValue равны 0, так как примитивный целочисленный массив всегда будет заполнить себя нулями. Вместо этого, вы должны попробовать это:

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

Для некоторых разъяснений по этим Integer констант, проверить Integer.MAX_VALUE и Integer.MIN_VALUE в API.

4
int minValue=myArray[0]; 

из-за этой линии, ваш MinValue устанавливается в 0. Таким образом, минимальное значение будет сброшен в этом методе, только если туАггау [я] в приведенном ниже коде меньше 0. В противном случае он остается 0.

for(i=1; i<myArray.length-1;i++) 
     { 
      if(myArray[i]<minValue) 
      { 
       minValue= myArray[i];     

      } 
     } 
+0

Спасибо всем за прояснение и разработку его для меня ... чрезвычайно благодарен :)! – aablah

Смежные вопросы