2012-03-25 11 views
0

私は5つ以下の整数変数を持っており、プログラム中にいくつかの値がランダムに割り当てられます。私は最大の変数名を取得したいが、変数値は取得しない。そして、私はそれらのうち少なくとも2つが同じ価値を持っているかどうかを知りたい。例を挙げてください。ありがとうございました。最大の変数を見つける

答えを
int politics_counter = 0; 
     int economics_counter = 0; 
     int foreign_counter = 0; 
     int sport_counter = 0; 
     int weather_counter = 0; 
+1

*名前*を使用する場合は、マップに保存する必要があります。 – bezmax

+0

いくつかのコードスニペットを挙げてください。私は初心者です。 – ssrp

+0

これは愚かな質問のようなものです。変数の名前は、マップを作成するようなジャンプが必要となるようなものではないと思われるまでは無関係です。その場合、最初にそのように表現するのはなぜですか? – PlexQ

答えて

1

そして今、(種類の)

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()); 
    } 
} 

、与えられましたこのオブジェクトには、すべて整数であり、すべてがこのメソッドにアクセスできるメンバーが含まれていることが必要です。それをよりすばらしいものにするために、それを見直して改善する方法があります。

+0

OPが言っているように、値は重複することができます。 –

+0

しかし、彼は複製された値ではなく、複製されているかどうかを知りたがっているので、私が思う名前を尋ねないので、詳細の代わりに複製を見つけましたか? – PlexQ

+0

私は最初の解決策の条件が間違っていると思います –

1

@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; 
} 
+0

あなたはHashMapこれはO(2n)ではなくTreeMapのようなO(2nlogn)で行いますが、使いやすさと使いやすさを考慮してTreeMapをとると思います。とにかく、人は木がもっと好きです。 – PlexQ

+0

キーのコンストラクタコピーを使用する必要はありません(不変の場合)。 –

+0

また、非常に古いバージョンのJavaを使用していない限り、ボクシングは不要です。vars.put( "politics_count"、0);うまく動作するはずです。 – PlexQ

関連する問題