0
votes

Besoin d'aide pour corriger les erreurs sur un projet Java

Voici mon code.

exit status 1
Main.java:5: error: illegal start of expression
    public class Shape{
    ^
Main.java:9: error: invalid method declaration; return type required
      public setDefault(){
             ^

En gros, j'essaie de faire en sorte qu'il puisse imprimer "Une forme avec une couleur verte et remplie. Voici mes erreurs.

public class Main {
  public static void main(String[] args) {
    public class Shape{
      private String color;
      private boolean filled;
      
      public setDefault(){
        color = green;
        filled = true;
      }
      
      public Shape(String color, boolean filled){
        this.color = color;
        this.filled = filled;
      }
      
      public String getColor(){
        return color;
      }
      public void setColor(String newColor){
        this.color = newColor;
      }
      
      public boolean getFilled(){
        return filled;
      }
      public void setFilled(boolean newFilled){
        this.filled = newFilled;
      }
      
      public void toString(){
        System.out.println("A Shape with color of: " + color + "and" + filled);
      }
    }
    Shape test = new Shape();
    test.toString();
  }
}

Cependant, je suis assez rouillé à Java et je sais qu'il y a plus d'erreurs. Quelqu'un peut-il indiquer et dire quels sont les problèmes et ce que je dois écrire pour les résoudre?


1 commentaires

1. Vous ne pouvez pas déclarer une classe dans la méthode - déplacez la classe Shape hors de main méthode main . 2. Si setDefault() ne renvoie rien, déclarez-le comme void : public void setDefault () {/*...*/} `


3 Réponses :


1
votes

Premièrement: vous essayez de définir une classe à l' intérieur d'une méthode, ce n'est pas autorisé (sauf pour les classes anonymes).

La solution la plus simple consiste à déplacer la déclaration de classe hors de la méthode main en déplaçant le début de la méthode main derrière votre classe.

Deuxièmement: votre méthode setDefault() doit avoir un type de retour. Si vous n'avez pas l'intention de retourner quoi que ce soit, utilisez void .


0 commentaires

1
votes

Vous devez définir une classe Shape distincte et renvoyer une String dans toString() . De plus, setDefault doit être un constructeur sans argument:

Main.java:

public class Shape{
    private String color;
    private boolean filled;

    public Shape(){
        this.color = "green";
        this.filled = true;
    }

    public Shape(String color, boolean filled){
        this.color = color;
        this.filled = filled;
    }

    public String getColor(){
        return color;
    }
    public void setColor(String newColor){
        this.color = newColor;
    }

    public boolean getFilled(){
        return filled;
    }
    public void setFilled(boolean newFilled){
        this.filled = newFilled;
    }

    public String toString(){
        return "A Shape with color of: " + this.color + " and " + this.filled;
    }
}

Shape.java:

public class Main {
  public static void main(String[] args) {
    Shape test = new Shape();
    System.out.println(test.toString());
  }
}


0 commentaires

0
votes

1: vous essayez de définir une classe publique dans une méthode qui n'est pas valide: si vous voulez définir une classe publique alors vous devez créer un autre fichier pour elle par le nom de Shape ou si vous voulez la définir dans Main classe Main juste définissez-le dans la portée de la classe Main et vous devez y accéder comme: new Main().new Shape("color", true);

2: setDefault() est une méthode donc elle a besoin d'un type de retour et si ne renvoie aucune valeur dont vous avez besoin pour la rendre void .

3: utilisez toujours "" (Double Quotation) pour les valeurs de chaîne.

4: vous remplacez le constructeur par défaut, donc lorsque vous appelez new, vous devez passer les paramètres pour la forme new Shape(); :

5: vous avez surchargé la toString() et elle a un type de retour de String et vous devez le faire tel qu'il a été défini:

public class Main {

    public static void main(String[] args) {
        Shape test = new Shape("color", true);
        System.out.println(test.toString());
    }
}

class Shape {
    private String color;
    private boolean filled;

    public void setDefault() {
        color = "green";
        filled = true;
    }

    public Shape(String color, boolean filled) {
        this.color = color;
        this.filled = filled;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String newColor) {
        this.color = newColor;
    }

    public boolean getFilled() {
        return filled;
    }

    public void setFilled(boolean newFilled) {
        this.filled = newFilled;
    }

    public String toString() {
        return "A Shape with color of: " + color + "and" + filled;
    }
}


0 commentaires