javac dit int (x = 1); n'est pas une déclaration dit alors « ; » attendu. Qu'est ce qui ne va pas avec mon code?

StackOverflow https://stackoverflow.com/questions/4789282

Question

Je suis sur un Mac G4 Mini essayer d'apprendre Java. Lorsque je tente de compiler « DooBee.java » en tapant « javac DooBee.java » au terminal je reçois deux erreurs. C'est ce que mon apparence du terminal comme:

> nephi-shields-mac-mini:/developer/MyProjects
> nephishields$ javac DooBee.java
> DooBee.java:5: not a statement
>                 int (x = 1);
>                 ^ DooBee.java:5: ';' expected
>                 int (x = 1);
>                     ^ 2 errors nephi-shields-mac-mini:/developer/MyProjects
> nephishields$

est ce que je l'ai tapé dans mon dossier « DooBee.java »:

public class DooBee {
    public static void main (String[] args) {
        int (x = 1);

        while (x < 3) {
            System.out.print ("Doo");
            System.out.print ("Bee");
            x = x + 1;
        }

        if (x == 3) {
           System.out.print ("Do");
        }
    }
}

Ai-je fait une erreur? Ou est-il quelque chose de mal avec mon ordinateur? désolé si cette question (ou similaire) a déjà été demandé. Honnêtement, j'ai essayé de trouver une réponse sur mon propre (recherches Google, la recherche Stack Overflow, récrit mon code à plusieurs reprises, vérifié mon livre « Head First Java » pour vous assurer que je tapais les choses de la bonne façon), mais est venu vide.

Était-ce utile?

La solution

Le problème est que (x = 1) est une expression, pas une déclaration, ne peut donc pas être utilisé pour déclarer la x variable. Retirez les parenthèses et vous aurez une déclaration correcte avec initialiseur.

Autres conseils

La déclaration correcte est:

public class DooBee {
    public static void main (String[] args) {
        int x = 1;
        ...
    }
}

Rappelez-vous votre commande d'opérations en Java. Éléments à l'intérieur de la parenthèse sont d'abord évaluées, de sorte que (x = 1) est évaluée, ce qui ne fait même pas vraiment de sens en Java, d'où l'erreur.

En général, vous allez seulement envelopper parenthèses autour de moulages, les clauses après un si, alors que, d'autre si, d'autre et de déclaration, ou dans des situations où vous voulez que votre logique booléenne soit très clair.

int (x = 1);

remplacer par

int x = 1;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top