2016-04-16 6 views
-3

Ich habe ein einfaches Programm geschrieben, um die Verwendung des statischen Schlüsselworts zu demonstrieren. Ich habe auch eine Methode eingegeben, um das Quadrat der Variablen zu berechnen, und habe den Wert der statischen Variable in der Hauptklasse initialisiert.Wie kann ich den Wert einer statischen Variablen an eine Methode übergeben?

class staticdemo{ 
public static int stvar; 

void square(int stvar){ 
    System.out.println("" + stvar*stvar); 
} 

} 
public class statictest { 
public static void main(String args[]){ 
    staticdemo.stvar = 10; 
int s = staticdemo.stvar; 
    square(s); //HERE IS WHERE I GET THE ERROR! 
} 
} 

die genaue Fehler i erhalten, ist „die Methode square (int) ist nicht definiert für den Typ statictest“

wie kann ich die Methode mit einer statischen Variablen durchführen?

+0

__JavaScript__ ??? – Rayon

+0

Beschriften Sie die Frage mit dem richtigen Code-Tag und Sie erhalten einige Antworten. Dies ist kein Javascript. – Dominofoe

+0

Sollte 'staticdemo.square' anstelle von' square' sein. Ich stimme zu, dies als minderwertige Frage zu schließen. – Everv0id

Antwort

0

Das Problem ist nicht, dass Sie ein statisches Feld vorbei sind (nicht variabel) in das Verfahren. Es ist, dass Sie versuchen, eine Instanz Methode ohne eine Instanz aufzurufen.

Entweder:

  1. square Make static als gut, so dass Sie es von main nennen kann, oder

  2. Erstellen Sie eine Instanz in main es rufen:

    new staticdemo().square(staticdemo.stvar); 
    

Ich würde auch stark ur Sie sollten nicht denselben Namen für ein statisches Feld (stvar) und einen Funktionsparameter (stvar in square) verwenden. Es fragt nur nach Verwirrung und Ärger.

Empfehlen Sie auch die folgenden Java-Standardnamenskonventionen, auch in Ihrem eigenen Testcode, aber insbesondere, wenn Sie andere um Hilfe bitten.

So vielleicht:

class StaticDemo { 
    public static int stvar; 

    public static void square(int s) { 
    //  ^^^^^^    ^
     System.out.println("" + s * s); 
    //      ^^
    } 
} 

public class StaticTest { 
    public static void main(String args[]) { 
     StaticDemo.square(StaticDemo.stvar); 
    // ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^ 
    } 
} 

Oder alternativ:

class StaticDemo { 
    public static int stvar; 

    public void square(int s) { 
    //     ^
     System.out.println("" + s * s); 
    //      ^^
    } 
} 

public class StaticTest { 
    public static void main(String args[]) { 
     new StaticDemo().square(StaticDemo.stvar); 
    // ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^ 
    } 
} 
0

Ihre Methode sollte auch statisch sein

0

Diese Methode muss

void square(int stvar) statisch sein, wenn Sie es von einem statischen Kontext

andere nennen wollen mehr elegant und OOP Weg wäre, ein Objekt der Klasse zu erklären, ihre Mitglieder kapseln, indem sie erklärt privaten

heißt

public static void main(String args[]){ 
    staticdemo.stvar = 10; 
    int s = staticdemo.stvar; 
    staticdemo foo = new staticdemo(); 

    foo.square(s); //HERE will work fine! 
} 
0

Sie können die nicht-statische Methode nicht direkt aufrufen. Sie müssen ein Objekt für die staticdemo-Klasse erstellen, dann können Sie die Methode mit dem oobject aufrufen. Geben Sie innerhalb der Hauptmethode staticdemo st = new staticdemo(); St.-Quadrat (e);

Verwandte Themen