webentwicklung-frage-antwort-db.com.de

Java: Ermitteln des höchsten Werts in einem Array

Aus irgendeinem Grund druckt dieser Code drei Werte für den höchsten Wert im Array, wenn ich versuche, nur einen zu drucken (11.3). Kann mir bitte jemand erklären, warum das so ist?

Vielen Dank.

import Java.util.Scanner;

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

        double[] decMax = {-2.8, -8.8, 2.3, 7.9, 4.1, -1.4, 11.3, 10.4,
            8.9, 8.1, 5.8, 5.9, 7.8, 4.9, 5.7, -0.9, -0.4, 7.3, 8.3, 6.5, 9.2,
            3.5, 3, 1.1, 6.5, 5.1, -1.2, -5.1, 2, 5.2, 2.1};

        double total = 0, avgMax = 0;

        for (int counter = 0; counter < decMax.length; counter++)
        {
         total += decMax[counter];
        }

        avgMax = total / decMax.length;

        System.out.printf("%s %2.2f\n", "The average maximum temperature for December was: ", avgMax);

        //finds the highest value
        double max = decMax[0];

        for (int counter = 1; counter < decMax.length; counter++)
        {
         if (decMax[counter] > max)
         {
          max = decMax[counter];
          System.out.println("The highest maximum for the December is: " + max);
         }

        }        
    }
}
22
HelloWorld

Es wird jedes Mal eine Zahl ausgedruckt, wenn eine gefunden wird, die höher ist als das aktuelle Maximum (was in Ihrem Fall dreimal vorkommt.) Bewegen Sie den Druck außerhalb der for-Schleife, und Sie sollten gut sein.

for (int counter = 1; counter < decMax.length; counter++)
{
     if (decMax[counter] > max)
     {
      max = decMax[counter];
     }
}

System.out.println("The highest maximum for the December is: " + max);
35
Toji

Um den höchsten (max) oder niedrigsten (min) Wert eines Arrays zu ermitteln, können Sie möglicherweise die richtige Richtung angeben. Hier ist ein Beispielcode, um den höchsten Wert eines primitiven Arrays zu erhalten.

Methode 1:

public int maxValue(int array[]){
  List<Integer> list = new ArrayList<Integer>();
  for (int i = 0; i < array.length; i++) {
    list.add(array[i]);
  }
 return Collections.max(list);

}

Um den niedrigsten Wert zu erhalten, können Sie verwenden 

public int maxValue(int array[]){
  int max = Arrays.stream(array).max().getAsInt();
  return max;
}

Nun sollte die folgende Zeile funktionieren.

System.out.println ("Das höchste Maximum für Dezember ist:" + maxValue (decMax)); 
23
sifho

Sie müssen das Maximum after ausdrucken, das Sie alle gescannt haben:

for (int counter = 1; counter < decMax.length; counter++)
{
    if (decMax[counter] > max)
    {
        max = decMax[counter];
        // not here: System.out.println("The highest maximum for the December is: " + max);
    }
}  
System.out.println("The highest maximum for the December is: " + max);
8
Michael Haren

Genauso wie von anderen vorgeschlagen, nur die sauberere Art und Weise erwähnt:

int max = decMax[0];
for(int i=1;i<decMax.length;i++)
    max = Math.max(decMax[i],max);
System.out.println("The Maximum value is : " + max);
5
Sahil Chhabra

Wenn Sie nach der schnellsten und einfachsten Methode suchen, um verschiedene Aktionen in Bezug auf Arrays auszuführen, ist die Verwendung der Collections-Klasse äußerst hilfreich (Dokumentation unter https://docs.Oracle.com/javase/7/docs/). api/Java/util/Collections.html ), die Aktionen reichen von der Suche nach Maximum, Minimum, Sortierung, umgekehrter Reihenfolge usw.

Eine einfache Möglichkeit, den maximalen Wert des Arrays mithilfe von Collections zu ermitteln:

Double[] decMax = {-2.8, -8.8, 2.3, 7.9, 4.1, -1.4, 11.3, 10.4, 8.9, 8.1, 5.8, 5.9, 7.8, 4.9, 5.7, -0.9, -0.4, 7.3, 8.3, 6.5, 9.2, 3.5, 3.0, 1.1, 6.5, 5.1, -1.2, -5.1, 2.0, 5.2, 2.1};
List<Double> a = new ArrayList<Double>(Arrays.asList(decMax));
System.out.println("The highest maximum for the December is: " + Collections.max(a));

Wenn Sie an der Ermittlung des Mindestwerts interessiert sind, ähnlich wie bei der Ermittlung des Maximums:

System.out.println(Collections.min(a));

Die einfachste Zeile zum Sortieren der Liste:

Collections.sort(a);

Oder alternativ die Verwendung der Arrays-Klasse zum Sortieren eines Arrays:

Arrays.sort(decMax);

Die Arrays-Klasse verfügt jedoch nicht über eine Methode, die direkt auf den Maximalwert verweist. Die Sortierung und der Verweis auf den letzten Index ist der Maximalwert. Beachten Sie jedoch, dass die Sortierung nach den beiden oben genannten Methoden eine Komplexität von O (n log n) hat. .

4
christylam1

Sie haben Ihre print () - Anweisung in der for()-Schleife. Sie sollte danach sein, damit sie nur einmal gedruckt wird. So, wie es aktuell ist, wird bei jeder Änderung des Maximums eine max ausgegeben.

1
twolfe18

Sie können eine Funktion verwenden, die ein Array akzeptiert und den maximalen Wert darin ermittelt. Ich habe es generisch gemacht, damit es auch andere Datentypen akzeptieren kann

public static <T extends Comparable<T>> T findMax(T[] array){       
    T max = array[0];
    for(T data: array){
        if(data.compareTo(max)>0)
            max =data;                
    }
    return max;
}
0
Shimrod

Der einfachste Weg, den ich gefunden habe, unterstützt alle Android-Versionen

Arrays.sort(series1Numbers);

int maxSeries = Integer.parseInt(String.valueOf(series1Numbers[series1Numbers.length-1]));
0
Amir De

Sie vergleichen nur das nullte Element mit den restlichen Elementen, so dass der letzte Wert ausgegeben wird, den es enthalten wird. Um jedes einzelne Element zu vergleichen, müssen wir die Werte wie folgt austauschen:

double max = decMax[0];
    for (int counter = 1; counter < decMax.length; counter++){
        if(max<decMax[i]){
            max=decMax[i]; //swapping
            decMax[i]=decMax[0];
        }
    }
    System.out.println("The max value is "+ max);

Hoffe, das wird dir helfen

0
Ijhar Ansari
import Java.util.*;
class main9 //Find the smallest and 2lagest and  ascending and descending order of  elements in array//
{
    public static void main(String args[])
    {
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter the array range");
        int no=sc.nextInt();
        System.out.println("Enter the array element");
        int a[]=new int[no];
        int i;
        for(i=0;i<no;i++)
        {
            a[i]=sc.nextInt();
        }
        Arrays.sort(a);
        int s=a[0];
        int l=a[a.length-1];
        int m=a[a.length-2];
        System.out.println("Smallest no is="+s);
        System.out.println("lagest 2 numbers are=");
        System.out.println(l);
        System.out.println(m);
        System.out.println("Array in ascending:");
        for(i=0;i<no;i++)
        {
            System.out.println(a[i]);
        }
        System.out.println("Array in descending:");
        for(i=a.length-1;i>=0;i--)
        {
            System.out.println(a[i]);
        }
    }
}
void FindMax()
{
    int lessonNum;

    System.out.print("Enter your lesson numbers : ");
    lessonNum = input.nextInt();
    int[] numbers = new int[lessonNum];
    for (int i = 0; i < numbers.length; i++)
    {
        System.out.print("Please enter " + (i + 1) + " number : ");
        numbers[i] = input.nextInt();
    }
    double max = numbers[0];
    for (int i = 1; i < numbers.length; i++)
    {
        if (numbers[i] > max)
        {
            max = numbers[i];
        }
    }
    System.out.println("Maximum number is : " + max);
}
0
Ahmad Fayazi

Sie können so schreiben.

import Java.util.Scanner;
class   BigNoArray{

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter how many array element");
        int n=sc.nextInt();
        int[] ar= new int[n];
        System.out.println("enter "+n+" values");
        for(int i=0;i<ar.length;i++){
            ar[i]=sc.nextInt();
        }
        int fbig=ar[0];
        int sbig=ar[1];
        int tbig=ar[3];
            for(int i=1;i<ar.length;i++){
                if(fbig<ar[i]){
                    sbig=fbig;
                    fbig=ar[i];
                }
                else if(sbig<ar[i]&&ar[i]!=fbig){
                    sbig=ar[i];
                }
                else if(tbig<ar[i]&&ar[i]!=fbig){
                    tbig=ar[i];
                }
            }
        System.out.println("first big number is "+fbig);
        System.out.println("second big number is "+sbig);
        System.out.println("third big number is "+tbig);
    }
}
0
Vivek Shah

Eine kürzere Lösung, um den maximalen Array-Wert zu erhalten:

double max = Arrays.stream(decMax).max(Double::compareTo).get();
0
freedev

Wenn Sie keine vordefinierten Java-Bibliotheken verwenden möchten, finden Sie unten die 

einfachster Weg

   public class Test {

    public static void main(String[] args) {
        double[] decMax = {-2.8, -8.8, 2.3, 7.9, 4.1, -1.4, 11.3, 10.4,
            8.9, 8.1, 5.8, 5.9, 7.8, 4.9, 5.7, -0.9, -0.4, 7.3, 8.3, 6.5, 9.2,
            3.5, 3, 1.1, 6.5, 5.1, -1.2, -5.1, 2, 5.2, 2.1};

        double maxx = decMax[0];

        for (int i = 0; i < decMax.length; i++) {
            if (maxx < decMax[i]) {
                maxx = decMax[i];
            }
        }
        System.out.println(maxx);

    }
}
0
Java Strikers

Ein einfacher Weg ohne Kollektionen

public void findHighestNoInArray() {
        int[] a = {1,2,6,8,9};
        int large = a[0];
            for(int num : a) {
                if(large < num) {
                    large = num;
                }
            }
            System.out.println("Large number is "+large+"");
        }
0
arunkumar sambu