2013-08-30 19 views
10

Il mio codice non dà errori, tuttavia non visualizza i valori minimo e massimo. Il codice è:Valori minimi e massimi Java nell'array

Scanner input = new Scanner(System.in); 

int array[] = new int[10]; 

System.out.println("Enter the numbers now."); 

for (int i = 0; i < array.length; i++) { 
    int next = input.nextInt(); 
    // sentineil that will stop loop when 999 is entered 
    if (next == 999) { 
     break; 
    } 
    array[i] = next; 
    // get biggest number 
    getMaxValue(array); 
    // get smallest number 
    getMinValue(array); 
} 

System.out.println("These are the numbers you have entered."); 
printArray(array); 


// getting the maximum value 
public static int getMaxValue(int[] array) { 
    int maxValue = array[0]; 
    for (int i = 1; i < array.length; i++) { 
     if (array[i] > maxValue) { 
      maxValue = array[i]; 
     } 
    } 
    return maxValue; 
} 

// getting the miniumum value 
public static int getMinValue(int[] array) { 
    int minValue = array[0]; 
    for (int i = 1; i < array.length; i++) { 
     if (array[i] < minValue) { 
      minValue = array[i]; 
     } 
    } 
    return minValue; 
} 

//this method prints the elements in an array...... 
//if this case is true, then that's enough to prove to you that the user input has //been stored in an array!!!!!!! 
public static void printArray(int arr[]) { 
    int n = arr.length; 

    for (int i = 0; i < n; i++) { 
     System.out.print(arr[i] + " "); 
    } 
} 

ho bisogno di uno System.out.println() per visualizzarla, o dovrebbe il lavoro di ritorno?

+0

Ovviamente devi stampare i numeri. Preferibilmente dove lo si invoca. E chiama questi due metodi al di fuori del ciclo for. –

risposta

15
getMaxValue(array); 
// get smallest number 
getMinValue(array); 

che si sta chiamando i metodi ma non utilizzando i valori restituiti.

System.out.println(getMaxValue(array)); 
System.out.println(getMinValue(array)); 
+0

Grazie! Proprio quello di cui avevo bisogno! – user2673161

3

Basta buttare via i valori Min/Max:

// get biggest number 
    getMaxValue(array); // <- getMaxValue returns value, which is ignored 
    // get smallest number 
    getMinValue(array); // <- getMinValue returns value, which is ignored as well 

È possibile fare qualcosa di simile

... 
    array[i] = next; 

    System.out.print("Max value = "); 
    System.out.println(getMaxValue(array)); // <- Print out getMaxValue value 

    System.out.print("Min value = "); 
    System.out.println(getMinValue(array)); // <- Print out getMinValue value 

    ... 
3

State facendo due errori qui.
1. chiamando i metodi getMaxValue(),getMinValue() prima che l'inizializzazione dell'array sia completata.
2.Non memorizzando il valore restituito dai metodi getMaxValue(),getMinValue().
in modo da provare questo codice

for (int i = 0 ; i < array.length; i++) 
    { 
     int next = input.nextInt(); 
     // sentineil that will stop loop when 999 is entered 
     if (next == 999) 
     break; 
     array[i] = next; 
    } 
    // get biggest number 
    int maxValue = getMaxValue(array); 
    System.out.println(maxValue); 

    // get smallest number 
    int minValue = getMinValue(array); 
    System.out.println(minValue); 
1

vostra massima, minima metodo è giusto

ma non si stampa int a consolare!

e ... forse meglio cambiare posizione (massimo, minimo) Metodi

ora (massimo, minimo) metodi della Roop. si ha bisogno di no .. solo bisogno di una sola chiamata

vi suggerisco di modificare questo codice

for (int i = 0 ; i < array.length; i++) { 
     int next = input.nextInt(); 
     // sentineil that will stop loop when 999 is entered 
     if (next == 999) 
     break; 
     array[i] = next; 
} 
System.out.println("max Value : " + getMaxValue(array)); 
System.out.println("min Value : " + getMinValue(array)); 
System.out.println("These are the numbers you have entered."); 
printArray(array); 
1

Sì, è necessario utilizzare un System.out.println. Ma stai ottenendo il minimo e il massimo ogni volta che inseriscono un valore e non tieni traccia del numero di elementi se si rompono presto.

Prova:

for (int i = 0 ; i < array.length; i++) { 
     int next = input.nextInt(); 
     // sentineil that will stop loop when 999 is entered 
     if (next == 999) 
      break; 

     array[i] = next; 
} 
int length = i; 
// get biggest number 
int large = getMaxValue(array, length); 
// get smallest number 
int small = getMinValue(array, length); 

// actually print 
System.out.println("Max: " + large + " Min: " + small); 

Poi si dovrà passare la lunghezza nei metodi per determinare min e max e per la stampa. Se non lo fai, il resto dei campi sarà 0 e può rovinare i valori minimi e massimi corretti.

11

Puoi provare anche questo, se non vuoi farlo con il tuo metodo.

Arrays.sort(arr); 
    System.out.println("Min value "+arr[0]); 
    System.out.println("Max value "+arr[arr.length-1]); 
+9

L'ordinamento è O (n * log (n)), la ricerca del valore min/max è O (n). –

1

Qui non è stato stampato il valore massimo e minimo. Stampa i valori max e min nei metodi getMaxVal e getMin val o dopo la chiamata. Questo è l'output.

Enter the numbers now. 
5 
Max: 5 
Min: 0 
3 
Max: 5 
Min: 0 
7 
Max: 7 
Min: 0 
3 
Max: 7 
Min: 0 
90 
Max: 90 
Min: 0 
43 
Max: 90 
Min: 0 
100 
Max: 100 
Min: 0 
45 
Max: 100 
Min: 0 
23 
Max: 100 
Min: 0 
22 
Max: 100 
Min: 3 
These are the numbers you have entered. 
5 3 7 3 90 43 100 45 23 22 

Also when you are declaring an array, it has all 0s initially.

4

Imho una delle soluzioni più semplici è: -

//MIN NUMBER 
Collections.sort(listOfNumbers); 
listOfNumbers.get(0); 

//MAX NUMBER 
Collections.sort(listOfNumbers); 
Collections.reverse(listOfNumbers); 
listOfNumbers.get(0); 
5

Ecco il codice di lavoro per trovare il minimo e massimo nella matrice.Spero che lo troverete utile:

import java.util.Random; 
import java.util.Scanner; 
public class FindMin { 
    public static void main(String[] args){ 
     System.out.println("Main Method Started"); 
     Scanner in = new Scanner(System.in); 
     System.out.println("Enter the size of the arr"); 
     int size = in.nextInt(); 
     System.out.println("Enter the maximum value of the arr"); 
     int max = in.nextInt(); 
     int [] arr = initializeArr(max, size); 
     print(arr); 
     findMinMax(arr); 
     System.out.println("Main Method Ended"); 
    } 
    public static void print(int[] arr){ 
     for(int val:arr){ 
      System.out.print(val + " "); 
     } 
     System.out.println(); 
    } 
    public static int[] initializeArr(int max,int size){ 
     Random random = new Random(); 
     int [] arr = new int[size]; 
     for(int ii=0;ii<arr.length;ii++){ 
      arr[ii]=random.nextInt(max); 
     } 
     return arr; 
    } 
    public static void findMinMax(int[] arr){ 
     int min=arr[0]; 
     int max=arr[0]; 
     for(int ii=0;ii<arr.length;ii++){ 
      if(arr[ii]<min){ 
       min=arr[ii]; 
      } 
      else if(arr[ii]>max){ 
       max=arr[ii]; 
      } 
     } 
     System.out.println("The minimum in the arr::"+min); 
     System.out.println("The maximum in the arr::"+max); 
    } 
} 
0
import java.util.*; 
class Maxmin 
{ 
    public static void main(String args[]) 
    { 
     int[] arr = new int[10]; 
     Scanner in = new Scanner(System.in); 
     int i, min=0, max=0; 
     for(i=0; i<=arr.length; i++) 
     { 
      System.out.print("Enter any number: "); 
      arr[i] = in.nextInt();   
     } 
     min = arr[0]; 
     for(i=0; i<=9; i++) 
     { 
      if(arr[i] > max) 
      { 
       max = arr[i]; 
      } 
      if(arr[i] < min) 
      { 
       min = arr[i]; 
      } 
     } 
     System.out.println("Maximum is: " + max); 
     System.out.println("Minimum is: " + min); 
    } 
} 
+1

Non funziona dato che sta dando questo errore: Eccezione nel thread "main" java.lang.ArrayIndexOutOfBoundsException –

1

// Per trovare il valore massimo e minimo in un array senza ordinare in java

import java.util.Scanner; 
import java.util.*; 
public class MaxMin_WoutSort { 
public static void main(String args[]) 
    { 
     int n,max=Integer.MIN_VALUE,min=Integer.MAX_VALUE; 
     System.out.println("Enter the number of elements: "); 
     Scanner sc = new Scanner(System.in); 

     int[] arr = new int[sc.nextInt()]; //U can't say static or dynamic. 
             //UnWrapping object sc to int value;sc.nextInt() 
     System.out.println("Enter the elements: "); 
     for(int i=0;i<arr.length;i++)  //Loop for entering values in array 
     { 
      int next = sc.nextInt(); 
      arr[i] = next; 
     } 
     for(int j=0;j<arr.length;j++) 
    { 
      if(arr[j]>max)    //Maximum Condition 
      max = arr[j]; 
      else if(arr[j]<min)   //Minimum Condition 
       min = arr[j]; 
    } 
    System.out.println("Highest Value in array: " +max); 
    System.out.println("Smallest Value in array: "+min); 

} 
} 
0

Ho aggiornato il vostro stesso codice si prega di confrontare il codice con il tuo codice originale:

public class Help { 

public static void main(String args[]){ 
    Scanner input = new Scanner(System.in); 

    int array[] = new int[10]; 

    System.out.println("Enter the numbers now."); 

    for (int i = 0; i < array.length; i++) { 
     int next = input.nextInt(); 
     // sentineil that will stop loop when 999 is entered 
     if (next == 999) { 
      break; 
     } 
     array[i] = next; 
    } 

    System.out.println("These are the numbers you have entered."); 
    printArray(array); 

    // get biggest number 
    System.out.println("Maximum: "+getMaxValue(array)); 
    // get smallest number 
    System.out.println("Minimum: "+getMinValue(array)); 
} 

// getting the maximum value 
public static int getMaxValue(int[] array) { 
    int maxValue = array[0]; 
    for (int i = 1; i < array.length; i++) { 
     if (array[i] > maxValue) { 
      maxValue = array[i]; 
     } 
    } 
    return maxValue; 
} 

// getting the miniumum value 
public static int getMinValue(int[] array) { 
    int minValue = array[0]; 
    for (int i = 1; i < array.length; i++) { 
     if (array[i] < minValue) { 
      minValue = array[i]; 
     } 
    } 
    return minValue; 
} 

//this method prints the elements in an array...... 
//if this case is true, then that's enough to prove to you that the user input has //been stored in an array!!!!!!! 
public static void printArray(int arr[]) { 
    int n = arr.length; 

    for (int i = 0; i < n; i++) { 
     System.out.print(arr[i] + " "); 
    } 
} 
}