Frage

Aus irgendeinem Grund dieser Code druckt drei Werte für den höchsten Wert in der Matrix, wenn ich versuche nur, ein zu drucken (die 11,3 ist). Kann jemand mir bitte erklären, warum es dies tut?

Danke.

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

        }        
    }
}
War es hilfreich?

Lösung

Es Ausdrucken eine Reihe jedes Mal, wenn man findet, der höher ist als der aktuelle max ist (die dreimal in Ihrem Fall auftreten geschieht.) 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);

Andere Tipps

Um den höchsten (max) oder niedrigste (min) Wert aus einem Array zu finden, dies könnte man die richtige Richtung geben. Hier ist ein Beispiel-Code für den höchsten Wert aus einer primitiven Array 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);

}

den niedrigsten Wert zu erhalten, können Sie

Collections.min(list)

Methode 2:

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

Nun ist die folgende Zeile sollte funktionieren.

System.out.println("The highest maximum for the December is: " + maxValue(decMax)); 

Sie müssen aus dem max nach drucken Sie haben alle von ihnen gescannt:

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

Die gleiche wie von anderen vorgeschlagen, nur die sauberere Möglichkeit zu erwähnen, es zu tun:

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

Wenn Sie für den schnellsten und einfachste Weg, um verschiedene Aktionen in Bezug auf Arrays durchzuführen, die Verwendung der Klasse Collections ist äußerst hilfreich (Dokumentation von https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html ), Aktionen reichen von der Maximal-, Minimal- Suchen, Sortieren in umgekehrter Reihenfolge, etc.

Eine einfache Möglichkeit, den maximalen Wert aus dem Array mit der Verwendung von Sammlungen zu finden:

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 daran interessiert sind, den Minimalwert zu finden, ähnlich wie bei der Suche nach Maximum:

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

Die einfachste Linie die Liste zu sortieren:

Collections.sort(a);

oder alternativ die Verwendung der Klasse Arrays ein Array zu sortieren:

Arrays.sort(decMax);

Jedoch hat die Klasse Arrays nicht eine Methode, die direkt auf den Maximalwert bezeichnet, es das Sortieren und die sich auf die letzte Index Der Maximalwert wird, halten jedoch daran durch die obigen 2 Methoden Sortieranlage hat eine Komplexität von O (n log n).

Eine kürzere Lösung, die den max-Wert von Array haben:

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

Sie haben Ihre print () Anweisung in der for() Schleife Es sollte nach so sein, dass es druckt nur einmal. so, wie es momentan ist, ist es jedesmal, wenn der max ändert druckt einen max.

Sie vergleichen nur nullte Element mit dem Rest der Elemente, so dass es den Wert gedruckt wird zuletzt größten Wert, die es enthält, in Ihnen Fall, das gleiche Problem geschieht. jede und jedes Element zu vergleichen, müssen wir die Werte tauschen wie:

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

Hope dies wird Ihnen helfen

Sie können eine Funktion verwenden, die eine Array akzeptiert und findet den maximalen Wert darin. ich machte es Generika, so dass es auch andere Datentypen annehmen könnte

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

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

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

Arrays.sort(series1Numbers);

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

Eine einfache Möglichkeit, ohne Sammlungen mit

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

Wenn Sie keine Java vordefinierte Bibliotheken verwenden möchten, dann unten ist die

einfachste Art und Weise

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

    }
}
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]);
        }
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top