найти самую большую переменную - PullRequest
0 голосов
/ 25 марта 2012

У меня ниже пяти целочисленных переменных, и во время программы им присваиваются некоторые значения случайным образом. Я хочу получить наибольшее имя переменной, но не значение переменной. И я хочу знать, имеют ли хотя бы два из них одинаковое значение. Пожалуйста, приведите пример. Спасибо.

int politics_counter = 0;
        int economics_counter = 0;
        int foreign_counter = 0;
        int sport_counter = 0;
        int weather_counter = 0;

Ответы [ 2 ]

1 голос
/ 25 марта 2012

Как подсказал @Max, вы можете использовать карту для хранения ваших переменных, а затем манипулировать картой для поиска либо имени самой большой переменной, либо значения.

// Initialize your map
HashMap<String, Integer> vars = new HashMap<String,Integer>();

// Inserting a variable
vars.put("politics_counter", new Integer(0));

// Looking for biggest variable
String biggestVar = "";
for (String key : vars.keySet()) {
    if (key.length() > biggestVar.length)
        biggestVar = key;
}
1 голос
/ 25 марта 2012

А теперь за ответ (вид)

public class MyThingie {

TreeMap<Integer, String> data = new TreeMap<Integer, String>();

public void doIt() {
    ...

    insertElement("politics_counter", politics_counter);
    insertElement("economics_counter", economics_counter);
    insertElement("foreign_counter", foreign_counter);
    insertElement("sport_counter", sport_counter);
    insertElement("weather_counter", weather_counter);

    System.out.println("Highest variable is "+data.lastEntry().getValue());
}

public void insertElement(String name, Integer i) {
    if (data.get(i) == null) {
        System.out.println("Element "+name+" has the name value as "+data.get(i));
    }
    else {
        data.put(name,i);
    }
}
}

и теперь для более интересного ответа:

public class BiggestFinder {
    public void showBiggester(Object o) throws Exception {
        TreeMap<Integer, String> data = new TreeMap<Integer, String)();
        for (Field f  : o.getDeclaredFields()) {
            Object v = f.getValue(o);
            if (v instanceof Integer) {
                if (data.get(v)!=null) {
                    System.out.println("Value for "+f.getName()+" is the same as "+data.get(v));
                }
                else {
                    data.put((Integer)f.getValue(o), f.getName());
                }
            }
        }

        System.out.println("Largest is "+data.lastEntry().getValue());
    }
}

, который будет опрашивать объект и показывать наибольшее поле, учитывая, что у объекта есть члены, которые являются целыми числами и которые все доступны для этого метода. Есть способ придумать это и улучшить его, чтобы сделать его более «устойчивым».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...