«ошибка: не удается найти символ» Символ находится внутри оператора Switch - PullRequest
0 голосов
/ 30 апреля 2018

Вот мой код, на который указывает ошибка:

shipX = shipOne.getX();

EDIT2: в частности, он не может найти shipOne.

Объект Ship, shipOne, инициализируется внутри оператора Switch не за десять строк до вышеприведенного кода. Я вполне уверен, что ошибка появляется из-за инициализации объекта внутри оператора Switch, и я не знаю, что с этим делать. Всего существует восемь объектов Ship, которые инициализируются с помощью цикла, и поэтому вышеуказанный код должен быть либо в операторе Switch, либо в операторе If, оба из которых, я уверен, вызовут ту же ошибку. Есть ли исключение, которое я могу выдать, или что-то, что может вызвать запуск моей программы? Корабельные объекты do инициализируются 100% времени, так что здесь не о чем беспокоиться.

РЕДАКТИРОВАТЬ: меня попросили остальную часть кода, так что это будет:

(Это еще не все, так как вы не видите оператора return, но остаток не имеет отношения к моей проблеме).

public static String[][] createFleet()
  {
  //Initialize Variables
     //Ship Variables
  boolean isHoriz = true;    //Is true if ship is Horizontal, false if Vertical
  char ID;
  int posX = 0;              //Origin of the ship (x coordinate [row])
  int posY = 0;              //Origin of the ship (y coordinate [column])
  int size = 0;              //Either 2, 3, or 4
     //Associated Variables
  Random randomGen = new Random();          //Random number generator
  String[][] board = new String[10][10];    //Gameboard, populated with ships
  int orientationRand = 0;                  //If 0, Ship Horizontal. If 1, Ship Vertical
  int posRand = 0;                          //Assigned to posX or posY
  int sizeRand = 0;                         //If 0 <= x < 10,   size = 2
                                            //If 10 <= x < 40,  size = 3
                                            //If 40 <= x < 100, size = 4

      //Create Ships
  for (int i = 0; i < 8; i++)
  {
     //Size
     sizeRand = randomGen.nextInt(100);
     if (sizeRand < 10)
     {
        size = 2;
     }
     else if (sizeRand < 40)
     {
        size = 3;
     }
     else size = 4;
     //Orientation & Position
     orientationRand = randomGen.nextInt(2);
     if (orientationRand == 0)
     {
        //Orientation
        isHoriz = true;
        //Position (horizontal)
           //x position
        switch (size)
        {
           case 2:
              posRand = randomGen.nextInt(9);
              posX = posRand;
              break;
           case 3:
              posRand = randomGen.nextInt(8);
              posX = posRand;
              break;
           case 4:
              posRand = randomGen.nextInt(7);
              posX = posRand;
              break;
        }
           //y position
        posRand = randomGen.nextInt(10);
        posY = posRand;
     }
     else
     {
        //Orientation
        isHoriz = false;
        //Position (vertical)
           //x position
        posRand = randomGen.nextInt(10);
        posX = posRand;
           //y position
        switch (size)
        {
           case 2:
              posRand = randomGen.nextInt(9);
              posY = posRand;
              break;
           case 3:
              posRand = randomGen.nextInt(8);
              posY = posRand;
              break;
           case 4:
              posRand = randomGen.nextInt(7);
              posY = posRand;
              break;
        }
     }

     //Assign Size, Orientation, and Position to each ship
     switch (i)
     {
        case 0:
           ID = 'A';
           Ship shipOne = new Ship(posX, posY, size, isHoriz, ID);
           break;
        case 1:
           ID = 'B';
           Ship shipTwo = new Ship(posX, posY, size, isHoriz, ID);
           break;
        case 2:
           ID = 'C';
           Ship shipThree = new Ship(posX, posY, size, isHoriz, ID);
           break;
        case 3:
           ID = 'D';
           Ship shipFour = new Ship(posX, posY, size, isHoriz, ID);
           break;
        case 4:
           ID = 'E';
           Ship shipFive = new Ship(posX, posY, size, isHoriz, ID);
           break;
        case 5:
           ID = 'F';
           Ship shipSix = new Ship(posX, posY, size, isHoriz, ID);
           break;
        case 6:
           ID = 'G';
           Ship shipSeven = new Ship(posX, posY, size, isHoriz, ID);
           break;
        case 7:
           ID = 'H';
           Ship shipEight = new Ship(posX, posY, size, isHoriz, ID);
           break;
     }
  }

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

В вашем коде переменная 'ID' нигде не объявляется. Вы должны объявить переменную перед ее использованием.

0 голосов
/ 30 апреля 2018

Инициализация объектов до нуля перед переключателем или операторами if Я думаю, что это должно решить вашу проблему.

Будет возможно обеспечить лучшее решение, если весь код будет опубликован.

...