2013-08-30 12 views
10

Mój kod nie podaje błędów, ale nie wyświetla wartości minimalnej i maksymalnej. Kod jest następujący:Minimalne i maksymalne wartości Java w tablicy

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

Czy potrzebuję system.out.println(), aby go wyświetlić, czy powinien powrócić do pracy?

+0

Oczywiście musisz wydrukować liczby. Najlepiej, gdy go przywołasz. I wywołaj te dwie metody poza pętlą for. –

Odpowiedz

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

Wywołujesz metody, ale nie używasz zwróconych wartości.

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

Dziękujemy! Dokładnie to, czego potrzebowałem! – user2673161

3

po prostu wyrzucić wartości 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 

Można zrobić coś jak

... 
    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

Robisz dwa błędy tutaj.
1. Wywołanie getMaxValue(),getMinValue() metod przed zakończeniem inicjowania macierzy.
2.Nie zapisuje zwracanej wartości zwróconej przez metody getMaxValue(),getMinValue().
Więc spróbuj tego kodu

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

swoim maksimum, minimum metoda jest odpowiednia

ale nie drukować int pocieszyć!

... a może lepiej zmiana lokalizacji (maksymalna i minimalna) METODY

teraz (maksymalna i minimalna) metody w Roop. to jest nie potrzebne .. wystarczy jeden telefon

proponuję zmienić ten kod

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

Tak musisz użyć System.out.println. Ale dostajesz minimum i maksimum za każdym razem, gdy wprowadzasz wartość i nie śledzisz liczby elementów, jeśli wcześnie się przerywają.

Spróbuj:

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

Następnie trzeba będzie przejść długości do metod w celu określenia minimalnej i maksymalnej i wydrukować. Jeśli tego nie zrobisz, pozostałe pola będą miały wartość 0 i mogą zepsuć prawidłowe wartości min i maks.

11

Możesz też spróbować, jeśli nie chcesz tego zrobić za pomocą swojej metody.

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

Sortowanie to O (n * log (n)), znalezienie wartości min/maks wynosi O (n). –

1

Tutaj nie drukuje się wartości maksymalnych i minimalnych. Wydrukuj wartości max i min w metodach getMaxVal i getMin val lub po wywołaniu. To jest wynik.

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 jeden z najprostszych rozwiązań jest: -

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

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

Oto kod roboczych znaleźć min i max w tablicy.Mam nadzieję, że znajdziesz to pomocne:

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

To nie działa, ponieważ daje ten błąd: Wyjątek w wątku "główny" java.lang.ArrayIndexOutOfBoundsException –

1

// znaleźć maksymalna i minimalna wartość w tablicy bez sortowania w Javie

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

I zaktualizowaniu sam kod należy porównać kod z Twój oryginalny kod:

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] + " "); 
    } 
} 
} 
Powiązane problemy