2016-11-05 3 views
-5

Das ist mein Java-Programmcode. Ich habe die add-Funktion für die Datentypen int und float überlastet, aber der Aufruf add(2.3, 2.4) löst einen Fehler aus, anstatt aufzurufen.Überladene Funktion löst einen Fehler für Float-Argumente aus

public class Main { 

    public static void main(String[] args) { 

     // This calls add(int, int) as expected 
     System.out.println(add(2,4)); 

     // This call throws an error 
     System.out.println(add(2.3,3.4)); 

    } 

    public static int add(int a, int b){ 
     return (a + b); 
    } 

    public static float add(float a, float b){ 
     return (a + b); 
    } 

} 
+1

Willkommen bei Stack-Überlauf! Bitte nimm die [Tour], schau dich um und lies die [Hilfe] durch, insbesondere [* Wie stelle ich eine gute Frage? *] (/ Help/how-to-ask) –

+0

Auch als du es warst Wenn Sie Ihre Frage stellen, gibt es eine große orange ** Box ** zum Formatieren ** rechts neben dem Textbereich mit nützlichen Informationen. Es gab auch eine komplette Symbolleiste mit Formatierungshilfen. Und eine ** [?] ** -Taste mit Formatierungshilfe. * Und * einen Vorschaubereich zwischen dem Textbereich und dem Post Your Question-Button (so dass Sie darüber scrollen müssen, um den Button zu finden, um Sie dazu anzuregen, ihn anzuschauen) und zeigen, wie Ihr Beitrag aussehen würde, wenn er gepostet wird . Wenn Sie Ihren Beitrag klarstellen und zeigen, dass Sie sich die Zeit genommen haben, verbessern Sie Ihre Chancen, gute Antworten zu erhalten. –

+1

Methodenaufruf zu System.out.println ändern (add (2.3f, 3.4f)); –

Antwort

1

Sie haben die überladenen Methoden korrekt definiert!

Was Sie falsch verstanden haben, ist die Art, wie Sie die Methoden aufrufen. Sie rufen add(2.3,3.4) an. 2.3 und 3.4 sind alle double s. Deshalb können sie nicht direkt in eine Methode eingefügt werden, die Floats akzeptiert.

"Was? Warum sind sie Doubles?" du könntest fragen.

Standardmäßig werden alle Zahlenliterale ohne . oder e als int s betrachtet. Und alle Zahlenliterale, die eines oder beide . oder e haben, werden als double s angesehen.

Um ein Fließkomma-Literal zu erstellen, fügen Sie am Ende der Zahlen f hinzu. das heißt diese sind alle Schwimmer:

1f 
1000f 
1.1f 
-9f 
1e99f 

So sollten Sie Ihre Methode wie diese

nennen
add(2.3f,3.4f) 
0

Es gibt add Methoden für int und float, während wörtliche 2.3 Typ double hat. Es gibt zwei Möglichkeiten, dies zu beheben:

  1. Verwenden float Literale, das heißt 2.3f und 3.4f (man beachte die f Suffix).

  2. Definieren Sie add Methode für double s.

Verwandte Themen