2016-10-10 2 views
0

Im erhalte eine Fehlermeldung, dass mein Konstruktor „Wert kann nicht aufgelöst werden“ HierWie quadriert man den angegebenen int-Wert?

public static MyInt square(MyInt a) { 
    double sqred = a.value; 
    MyInt sqrObjt = new MyInt(sqred); 

    return sqrObjt; 
} 

public MyInt(int value){ 
    this.value = value; 
} 
+1

Wo ist der Fehler? –

+2

Und ist 'MyInt.value' in Ihrer' square' Methode sichtbar? –

+0

stellen Sie sicher, dass 'value'' public' ist. – Arijoon

Antwort

1

Stellen Sie sicher, das int Feldwert in Ihrer MyInt Klasse deklariert haben. Stellen Sie außerdem sicher, dass der Double-Wert in Ihrer Square-Methode in eine ganze Zahl umgewandelt wird. Es funktioniert gut für mich.

public class MyInt { 

    int value; // make sure you don't forget to declare the field 

    public static MyInt square(MyInt a) { 
     double sqred = a.value; // you could've just done int sqred = a.value * a.value rather than have a double 
     MyInt sqrObjt = new MyInt((int) sqred); // don't forget to cast sqred to int 
     return sqrObjt; 
    } 

    public MyInt(int value){ 
     this.value = value; 
    } 



    public static void main(String[] args) { 
     MyInt four = new MyInt(4); 
     MyInt fourSquares = square(four); 
     System.out.println(fourSquares.value); 
    } 

} 
2

Ich nehme an, die statische Methode hier irgendwo anders als die Klasse ist MyInt. Wahrscheinlich möchten Sie keine öffentliche statische Methode, das ist eher eine prozedurale Herangehensweise an das Problem als eine objektorientierte Methode. Statt eine nicht-statische Methode zur Klasse hinzufügen MyInt:

public MyInt square() { 
    return new MyInt(this.value * this.value); 
} 

Verbrauch:

MyInt squared = someMyInt.square(); 
0

Ich könnte mir vorstellen, Ihr Hauptproblem ist die Tatsache, dass Sie nie in der Klasse value an jedem Punkt erklären. Aber ich erweiterte auf die Antwort @junvar gab Getter und Setter für die Kapselung. Hier ist, wie ich es tun würde ....

public class MyInt { 
    private int value; 

    void setValue(int value) { //setter 
     this.value = value; 
    } 

    int getValue() { //getter 
     return this.value; 
    } 

    int square() { //square method 
     int sqred = getValue() * getValue(); 
     return sqred; 
    } 

    public MyInt(int value) { //constructor 
     setValue(value); 
    } 

    public static void main(String[] args) { //main to run it 
     MyInt testCase = new MyInt(3); 
     System.out.println(testCase.square()); 
    } 
} 
Verwandte Themen