Компиляция java-класса, «неправильный запуск типа» и «<identifier> ожидаемые» ошибки - PullRequest
0 голосов
/ 01 марта 2019

Практиковался в работе с конструкторами в Java, вот класс, который я пытался скомпилировать:

import java.util.*;
import java.lang.*;
public class mob{

    public Map enemies = new HashMap<String, Point>();
    public Point pn = new Point(1, 1);
    enemies.put("Peon", pn);
    public Point gn = new Point(5, 2);
    enemies.put("Goblin", gn);
    public Point tl = new Point(25, 8);
    enemies.put("Troll", tl);
    public Point oc = new Point(13, 5);
    enemies.put("Orc", oc);
    public String name;
    public int hp;
    public int dmg;

    public mob(String type){
      name=type;
      hp=enemies.get(type).getX();
      dmg=enemies.get(type).getY();
    }

    public mob(){
      name="Peon";
      hp=enemies.get("Peon").getX();
      dmg=enemies.get("Peon").getY();

    }

    void setName(String name){
            this.name=name;
    }


    public static void main(String[] args) {

      Scanner scan = new Scanner(System.in());
      System.out.System.out.println("Enter mob type:");
      String type = scan.nextln();
      if(mob.containsKey(type)){
        mob mob1 = new mob(type);
      }
      else{
        mob mob1 = new mob();
        mob1.setName(type);
      }

      System.out.println("You just spawned a "+mob1.name+", it has "+mob1.hp+" hp and "+mob1.dmg+" dmg!");
    }
}

Основной метод предназначен для получения некоторого ввода из консоли и создания определенного моба с использованием данных изкарта («враги») или моб по умолчанию в зависимости от входа.Но когда я пытаюсь скомпилировать это в командной строке, я получаю сообщения об ошибках всех методов врагов.put (), а именно:

mob.java:7: error: <identifier> expected
    enemies.put("Peon", pn);
               ^
mob.java:7: error: illegal start of type
    enemies.put("Peon", pn);
               ^
mob.java:9: error: <identifier> expected
    enemies.put("Goblin", gn);
               ^

и т. Д.

Посмотрел похожие проблемы и попыталсяисправить вещи (отсюда и все публичные объявления), но не могу понять это ...

Использование Java и Javac v11.0.2

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Заявления в Java должны быть в методе.Похоже, вы пытаетесь инициализировать поля с помощью операторов типа enemies.put("Goblin", gn);, поэтому я предлагаю вам создать метод инициализации для каждого поля.Ваш код станет примерно таким:

import java.util.*;
import java.lang.*;
public class mob{

    public Map enemies = initialiseEnemies();
    public Point pn = new Point(1, 1);
    public Point gn = new Point(5, 2);
    public Point tl = new Point(25, 8);
    public Point oc = new Point(13, 5);
    public String name;
    public int hp;
    public int dmg;

    public static Map initialiseEnemies() {
        // Build the Hashmap here and return it.
    }

    public mob(String type){
      name=type;
      hp=enemies.get(type).getX();
      dmg=enemies.get(type).getY();
    }

    public mob(){
      name="Peon";
      hp=enemies.get("Peon").getX();
      dmg=enemies.get("Peon").getY();

    }

    void setName(String name){
            this.name=name;
    }


    public static void main(String[] args) {

      Scanner scan = new Scanner(System.in());
      System.out.System.out.println("Enter mob type:");
      String type = scan.nextln();
      if(mob.containsKey(type)){
        mob mob1 = new mob(type);
      }
      else{
        mob mob1 = new mob();
        mob1.setName(type);
      }

      System.out.println("You just spawned a "+mob1.name+", it has "+mob1.hp+" hp and "+mob1.dmg+" dmg!");
    }
}
0 голосов
/ 01 марта 2019

Алмазы рассказывают компиляторам об общих классах.Тем не менее, синтаксис должен быть:

 public Map<String,Point> enemies = new HashMap<>();

и команды по умолчанию the enemies.put("Peon", pn); должны выполняться внутри конструктора .

...