Сообщений: 97
Тем: 32
Зарегистрирован: Sep 2012
Репутация:
2
Доброго дня. Хочу сделать "небольшого" доп. ГК на java.
Не могу понять, как можно адекватно поместить статик данные в классе, что бы потом из него вытягивать? Т.е. класс будет исключительно для хранения статических данных, в данном случае координат
Вот пример:
Код: public class Teleport24
{
final int[][] CoordLoc1 =
{
{59018,-42682,-3005}
};
final int[][] CoordLoc2 =
{
{76618,-42682,-3005}
};
final int[][] CoordLoc3 =
{
{11318,-42682,-3005}
};
...
public getCoordLoc1()
{
return CoordLoc1;
}
...
}
Вот такой вот класс примерно должен быть, после чего, в самом инстансе у нового гк будет:
Код: switch(locations)
{
...
player.teleToLocation(Teleport24.getCoordLoc1());
...
}
Будет ли это правильно работать? И в чем я здесь не прав?(
Как вообще сделать лучше?
Сообщений: 4,694
Тем: 85
Зарегистрирован: Mar 2009
Репутация:
23,364
Неправильно получаете данные из массива.
Fortuna - non penis, in manus non recipe.
Сообщений: 197
Тем: 4
Зарегистрирован: Aug 2011
Репутация:
948
Код: package teleports;
import net.l2emuproject.gameserver.model.actor.instance.L2PcInstance;
import net.l2emuproject.geoserver.model.Location;
import net.l2emuproject.tools.random.Rnd;
import java.util.ArrayList;
import java.util.List;
import static teleports.TeleportExample.*;
public class TeleportExample {
public static final List<Location> TELEPORT = new ArrayList<Location>();
static {
TELEPORT.add(new Location(69,96,69));
TELEPORT.add(new Location(77,66,33));
}
}
class GateKeeper
{
private void doTeleport(L2PcInstance player)
{
int rnd = Rnd.get(TELEPORT.size());
player.teleToLocation(TeleportExample.TELEPORT.get(rnd),false);
}
}
это если конкретно со статическими данными. за грамотность кода не отвечаю.
Сообщений: 97
Тем: 32
Зарегистрирован: Sep 2012
Репутация:
2
Спс большое, понял)
А если выборка не рандомная, а допустим у меня каждая локация позначена определенными координатами, и мне нужно конкретное значение? Как можно определить эти координаты в ArrayList? Затем вытянуть по определенному Id?
Сообщений: 197
Тем: 4
Зарегистрирован: Aug 2011
Репутация:
948
через Map делайте и выбирайте по ключу.
Сообщений: 97
Тем: 32
Зарегистрирован: Sep 2012
Репутация:
2
Ну вот например делаю так:
Код: public class TeleportPoint
{
private Map<String, Location> teleports = new HashMap<String, Location>();
teleports.put("thiskey1", new Location(50,50,50));
//teleports.get("thiskey1");
}
Выдает кучу ошибок при компиляции, "<indentefier> expected" , "illegal start of types", на строчке teleports.put
Бьюсь головой, перечитываю сотни хелпов по HashMap, делаю все вроде бы правильно но не могу понять ЧТО здесь не так... Помогите пожалуйста
Сообщений: 197
Тем: 4
Зарегистрирован: Aug 2011
Репутация:
948
Вам уже советовали - почитайте книги. У вас нету понимания того, как должно быть. Смысл писать методом тыка?
Ну или хотя бы поставьте IDE и вчитывайтесь в ошибки.
Если вам надо заполнить коллекцию данными, то делайте это в конструкторе, либо в static {} блоке, если коллекция объявлена как static.
Сообщений: 97
Тем: 32
Зарегистрирован: Sep 2012
Репутация:
2
Цитата:Вам уже советовали - почитайте книги. У вас нету понимания того, как должно быть. Смысл писать методом тыка?
Ну или хотя бы поставьте IDE и вчитывайтесь в ошибки.
Если вам надо заполнить коллекцию данными, то делайте это в конструкторе, либо в static {} блоке, если коллекция объявлена как static.
Я вас уверяю, что книги я читал и продолжаю обучаться. Не все сразу.
Про коллекции я тоже читал не мало, перед тем как написать это так же перекопал гугл.
Пересмотрев любые примеры в гугле - все они показывают тольк отак. Откуда я могу знать про конструктор для этого???? В книге, которая у мну есть по яве - тоже самое, ничего подробного как вы описали НЕТ.
Спасибо!
Теперь буду знать.
и Спасибо за подсказку насчет компилятора, посмотрю что он пишет. Думал код маленький , напишу в NP++
Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
Писать код в NP++. Да вы батенька шутник.
Сообщений: 1,485
Тем: 12
Зарегистрирован: Mar 2010
Репутация:
2,994
Дорогой топик-стартер - посмотрите сами что вы пытаетесь куда передавать.
вот например
final int[][] CoordLoc1 =
{
{59018,-42682,-3005}
};
зачем вам объявлять массив int[][] для того чтобы положить в него всего 3 координаты?
final int[] CoordLoc1 = {59018,-42682,-3005};
Далее
player.teleToLocation(Teleport24.getCoordLoc1());
что вы думаете должно попадать в функцию teleToLocation? есть ли вход с int[] значением в процедуре?
Если вы не понимаете то о чем я написал - то попытайтесь это понять - потому что людям не нравится помогать другим людям, которые не пытаются понять вообще о чем спрашивают - это раздражает.
|