2016-06-12 3 views
0

Ich bin wahrscheinlich mit einem sehr einfachen Dilemma konfrontiert. Ich versuche, ein Programm zu erstellen, das die Mittelwerte, Summen und die Anzahl aller dem Taschenrechner eingegebenen Zahlen berechnet. Das Problem dabei ist, dass ich nur eine Eingabe oder drei akzeptieren kann (abhängig von der Anzahl der Variablen, die in meinen Methodenparametern aufgeführt sind). Wie mache ich meine add() - Methode tatsächlich akzeptieren n Anzahl der Eingänge im Gegensatz zu einem vordefinierten Satz?Wie mache ich meine Methode akzeptieren x Anzahl der Parameter

Hauptklasse

public class Calculator 
{ 
    public static void main (String [] args) 
    { 
     AverageCalculator calculation1 = new AverageCalculator(); 
     AverageCalculator calculation2 = new AverageCalculator(); 

     calculation1.add(13); 
     System.out.println("Sum: " + calculation1.getSum()); 
     System.out.println("Count: " + calculation1.getCount()); 
     System.out.println("Average: " + calculation1.getAverage()); 

     System.out.println(); 

     calculation2.add(3, 7, 12); // Error due to method parameters 
     System.out.println("Sum: " + calculation2.getSum()); 
     System.out.println("Count: " + calculation2.getCount()); 
     System.out.println("Average: " + calculation2.getAverage()); 
    } 
} 

Ich erhalte eine Fehlermeldung, wenn diese Zusammenstellung:

Calculator.java:28: error: method add in class AverageCalculator cannot be applied to given types; 
     calc2.add(3, 7, 12); 

ich laufe dann darüber, wie bin ich mit meiner Methode add() gehe zu beschäftigen Funktionalität. Ich weiß, was es tun muss, ich bin mir sicher, dass ich eine for-Schleife hinzufügen muss. Es gibt jedoch keine gegebene Länge für das Parsen. Habe ich meine i = 0; i < calculation 2; i++? Siehe Kommentare in diesem Abschnitt

Sekundärklasse

public class AverageCalculator 
{ 
    private int sum; 
    private int count; 

    public AverageCalculator() {} 

    public void add (int newNum) // One input due to single parameter 
    { 
     // How to accept the multiple input from main class with this mutator 
     // and successfully manipulate data in this method 
     sum += newNum; 
     count++; 
    } 
    public int getSum() 
    { return sum; } 

    public int getCount() 
    { return count; } 

    public double getAverage() 
    { return (double) sum/count; } 
} 
+1

Dies nennt sich _varargs_. Bitte schauen Sie sich an ["Wann verwenden Sie varargs in Java?"] (Http://stackoverflow.com/questions/766559/when-do-you-use-varargs-in- Java) – Seelenvirtuose

+0

Es gibt ähnliche Fragen. Siehe unter Link. http://stackoverflow.com/questions/17837117/java-sending-multiple-parameters-to-method –

Antwort

1

Java dies unterstützt. Is heißt "Varargs". Wenn Sie Ihrem Typ "..." hinzufügen, können Sie ihn beliebig oft wiederholen (einschließlich 0 Mal) und dann in Ihrer Funktion als Array verarbeiten. Dies könnte wie folgt aus (dieser Code ist völlig ungetestet):

public void add(int... newNums) { 
    for (int num : newNums) { 
     sum += num; 
     count++; 
    } 
} 

A Sie ein bisschen mehr here lesen kann.

+0

Ich bin jetzt konfrontiert mit einem Fehler des Typs "schlechter Operand" für meinen kleinen Ausdruck, den ich innerhalb dieses Codeblocks habe. Wie wird die Addition durchgeführt? – Computer

+0

Ich habe gerade den Code aus meiner Antwort mit 'add (3, 7, 12) getestet;' und keinen Fehler bekommen. Können Sie mir die Fehlermeldung geben, die Sie erhalten? – Leon

+0

Ah nur ein einfacher Fehler, es ist alles behoben. Danke. – Computer