Хорошо, может быть, не правильный заголовок, но вот что я думаю. Я ищу способ перебрать набор переменных. Например, я думаю, что в моей игре будет ряд вещей, которые вы могли бы разблокировать, и когда вы вошли в «разблокированный» или что-то, это покажет вам, что вы разблокировали, и только то, что вы разблокировали. Таким образом, он будет показывать только Булевы, которые были ложными.Перечислить переменные в Java
ответ
Просто использовать map:
Map<String, Boolean> m = new HashMap<String, Boolean>();
m.put("test1", false);
m.put("test2", true);
Использование:
System.out.println("is test1 " + m.get("test1"));
Зачем это делать? Помимо недостающих дженериков, это разумно –
Что не так? –
Почему вы отредактировали, чтобы удалить оператора бриллианта? –
В Java нет простого способа получить переменный, основанные на его имя. Однако вы можете хранить все свои переменные в HashMap
. Это выполнит то, что вы хотите.
HashMap<String, Boolean> vars = new HashMap<>();
vars.put("test1", true); // to make a new variable
vars.get("test1"); // to get a variable's value
Если вы хотите сохранить любой тип переменной, измените инструкцию, которая создает список переменных.
HashMap<String, Object> vars = new HashMap<>();
Чтобы найти только
booleans
, которые
false
, вы можете просто перебрать
HashMap
, например, так:
for(Entry<String, Boolean> entry : vars.entrySet()) {
String key = entry.getKey();
boolean value = entry.getValue();
if(!value) {
System.out.println(key + " was false");
}
}
Существует всеобъемлющее руководство here, если вы хотите узнать, подробнее о картах на Java.
, это только незначительно медленнее. Хэш-карты очень быстрые –
Это правда. Я думал, что это может быть медленнее, чем в «JavaScript», но это не имеет отношения к Java. – frenchDolphin
У вас может быть метод, который возвращает коллекцию ключей с ложными значениями. В зависимости от ваших требований (если это домашнее задание или что-то еще) есть несколько способов, которыми вы могли бы это сделать. Если требуется использовать только примитивы, вы могли бы сделать что-то вроде
public List<String> getUnlockedItems(Map<String, Boolean> map) {
// map validation (not null, has entries, etc)
final List<String> unlockedEntries = new ArrayList<>();
for (Map.Entry<String, Boolean> entry : map.entries()) {
if (entry.getValue() == true) {// if it has been unlocked
unlockedEntries.add(entry.getKey());
}
}
return unlockedEntries;
}
public static void main(String[] args) {
Map<String, Boolean> unlockables = new HashMap<>();
unlockables.put("Fire Punch", false);
unlockables.put("Ice Punch", false);
unlockables.put("Mega Punch", false);
unlockables.put("Thunder Punch", false);
// Player unlocks Fire Punch
unlockables.put("Fire Punch", true);
// Get list of unlockables they have unlocked
List<String> unlockedItems = getUnlockedItems(unlockables); // returns ["Fire Punch"]
}
Если вы можете определить свои собственные типы, это может быть лучше с точки зрения ремонтопригодности и читаемости, чтобы сделать что-то вроде
public class Unlockable {
public Unlockable(String name) {
// name validation
this.name = name;
}
public void unlock() {
unlocked = true;
}
public boolean isUnlocked() {
return unlocked;
}
private String name;
private boolean unlocked;
}
А потом что-то вроде
public List<Unlockable> getUnlockedItems(List<Unlockable> unlockables) {
List<Unlockable> unlockedItems = new ArrayList<>();
for (Unlockable unlockable : unlockables) {
if (unlockable.isUnlocked()) {
unlockedItems.add(unlockable);
}
}
return unlockedItems;
}
public static void main(String[] args) {
Unlockable firePunch = new Unlockable("Fire Punch");
Unlockable icePunch = new Unlockable("Ice Punch");
Unlockable megaPunch = new Unlockable("Mega Punch");
Unlockable thunderPunch = new Unlockable("Thunder Punch");
List<Unlockable> unlockables = new ArrayList<>();
unlockables.add(firePunch);
unlockables.add(icePunch);
unlockables.add(megaPunch);
unlockables.add(thunderPunch);
// Player unlocks Fire Punch
firePunch.unlock();
// Get list of unlockables they have unlocked
List<Unlockable> unlockedItems = getUnlockedItems(unlockables); // returns ["Fire Punch"]
}
- 1. Пытаться перечислить переменные в PHP
- 2. Как мне перечислить переменные из класса Java в другой класс?
- 3. Как перечислить переменные из класса
- 4. Как перечислить глобальные переменные в MATLAB?
- 5. Перечислить переменные в исполняемом сегменте памяти
- 6. Как перечислить все переменные класса в swift
- 7. Tensorflow. Перечислить переменные в контрольной точке
- 8. Как перечислить все переменные среды в Vim?
- 9. Как перечислить все переменные в Gorilla Mux?
- 10. Как перечислить все переменные PHP в файле?
- 11. Перечислить переменные Session String в ASP.NET
- 12. Перечислить глобальные переменные в исполняемом файле
- 13. Как перечислить и распечатать переменные в bash?
- 14. Перечислить переменные данных Ajax в PHP?
- 15. Перечислить переменные переменных, присвоенные в C# winform
- 16. Как перечислить все неопределенные переменные в JavaScript?
- 17. Как перечислить переменные, доступные в шаблоне Jade?
- 18. Можно ли перечислить переменные с terraform?
- 19. Перечислить переменные среды на C++ (кросс-платформенный)
- 20. как перечислить все переменные функции C#
- 21. Как перечислить все переменные в текущем контексте в gdb?
- 22. как перечислить переменные в области описания конструктора в жасмине
- 23. Java - Как перечислить содержимое каталога?
- 24. Java Access Перечислить определенные методы?
- 25. Переменные строки в Java
- 26. Переменные аргументы в Java
- 27. Переменные в интерфейсах Java
- 28. Статические переменные в Java
- 29. переменные в Java Script
- 30. Абстрактные переменные в Java?
Даже хотя это невероятно неортодоксальные - вы хотите, чтобы пользователь мог запросить о * переменных *, которая не является хорошим знаком с места в карьер - это его дело T они всегда будут спрашивать о конкретных переменных вашего класса? – Makoto
Это не имеет никакого смысла. У вас есть две переменные с тем же именем. Но, возможно, вам нужно использовать java Reflexion. – ergonaut