enumでの要素番号から要素名の取得方法

このQ&Aのポイント
  • 列挙型の中にファイル名を紐付けて利用したいと考えています。
  • 要素番号から要素名を取得する方法が調べても分かりませんでした。
  • 具体的には,以下のソースで乱数を発生させ,その番号の要素名を取得する方法が知りたいです。
回答を見る
  • ベストアンサー

enumでの要素番号から要素名の取得方法

こんにちは. java初心者です. 列挙型について勉強しています. 列挙型の中にファイル名を紐付けて利用したいと考えています. 要素名から要素番号を取得する方法はordinal()で出来ますが, その逆で,要素番号から要素名を取得する方法が調べても分かりませんでした. 具体的には,以下のソースで乱数を発生させ,その番号の要素名を取得する方法が知りたいです. よろしくお願いします. =========================== import java.util.Random; public class Sample { // 列挙型 enum Color{ RED("data1.txt"), BLUE("data2.txt"), GREEN("data3.txt"), NUM(""); private String name; Color(String name){ this.name = name; } public String getName(){ return name; } } public static void main(String args[]){ for(int i=0;i<10;i++){ Random rnd = new Random(); int id = rnd.nextInt(Color.NUM.ordinal()); // ランダム Color c = null; System.out.println("要素番号" + id + "の要素名は" /* + Colorのid番目の要素名 */ + "ファイル名は" + c.getName() + "です"); } } } ===========================

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • teketon
  • ベストアンサー率65% (141/215)
回答No.1

Color.values()[id] ただし、順序と要素を対応させる必要があるならenumではなく、配列を検討すべきです。

関連するQ&A

  • jQueryでxmlの異なるタグ要素を取得したい。

    jQueryを最近勉強したての者です。 詳しい方、どうか教えて下さい。 HTMLにxmlのデータを読み込ませようとしています。 概略をお話しすると、 htmlファイルによって、xmlの別々の要素を取得したいのです。 やりたいメソッドは同じです。 別々の要素の中のデータによって、imgの表示/非表示を切り替えたいのです。 問題は、対象となるhtmlファイルが複数あり そのhtmlファイルによって、参照するxmlのタグが異なる事なんです。 xmlは、以下のように<shopdata>をルートノードとし、以下のような感じです。 --------------------- <?xml version="1.0" encoding="utf-8"?> <shopdata> <item> <name1>0</name1> <name2>1</name2> <name3>0</name3> </item> </shopdata> --------------------- <name*>~</name*> の中のデータは、0もしくは1なのですが 0の時はimgを表示 1の時はimgを非表示させようと考えています。 ただ<name1><name2><name3> とタグ名がバラバラなんです。 ※おしりの数字が違うだけで、規則的ではあります。 ちなみにhtmlは複数あって  a.htmlの時は→xmlの<name1>を参照  b.htmlの時は→xmlの<name2>を参照  c.htmlの時は→xmlの<name3>を参照 という感じです。 ※htmlファイル名は特に規則的ではなく、いろいろなファイル名がついています。。。 最初、考えたのは、 htmlのどこかに、id="1"と入れて、idが1の時は、<name1>の要素を取得し、 htmlのどこかに、id="2"と入れて、idが2の時は、<name2>の要素を取得し… っていうことを考えたのですが、それもどのように書いたら良いのかが分からないんです。 そもそも、そういった事は可能なのでしょうか? ちなみのhtmlのbodyタグ自体がテンプレートでできているので、 idをどこかにふるとしたら、head内とかになるのしょうか? それぞれ、ボタンの表示は、 if文を使って、show(),hide()メソッドを使うとは思うのですが… 詳しくコードを教えていただけたら、助かります。 どうか、宜しくお願いいたします。

    • ベストアンサー
    • AJAX
  • HTML要素のid/class名の長さについて

    HTML要素のid/class名の長さについて HTML要素のid/class名についてですが、この名前の長さは何文字まで指定できるのでしょうか? 特に制限はなく、ブラウザなどの実装に依存するのでしょうか? <div id="so-loooooooooong-id-name"></div>

    • ベストアンサー
    • HTML
  • C#で変数名の取得

    C#2.0を使っています。 例えば string s = "test"; という変数名「s」があったときに、この変数名を Reflectionか何かを利用して取得することはできないでしょうか? s.GetType().NameなどでString(型)は取得できるのですが 変数名「s」を取得したいのです。

  • 要素のid属性の名前について

    要素のid属性の名前について質問があるのですが、 ■質問1 ID名を付けるとき、同一文書内に同じID名を複数使用してはいけない、というのはこれは同じ要素に対して同じID名を複数付けてはいけないということでしょうか?それとも要素は関係なく、ID名そのものが複数存在してはいけないということでしょうか? 例1:要素、ID名ともに同じ場合× <p id="name"></p> <p id="name"></p> 例2:要素が違って、ID名が同じ場合? <p id="name"></p> <div id="name"></div> 例3:要素が違い、ID名も違うので○ <p id="name1"></p> <div id="name2"></div> ■質問2 ID名は、同一文書内に同じID名を複数使用してはいけないと言われていますが、実際には使用できてしまうそうですが、やはり本来の使用方法にのっとって同一ID名を複数使用しない方がよいのでしょうか? 回答よろしくお願いします。

    • ベストアンサー
    • HTML
  • SQLServerで列名取得

    Microsoft SQL Server2014 ManagementStudio を Windows7 で使用しています。 テーブルのカラム(列)名を取得したくて いろいろ調べてみましたが SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'TestTable' ORDER BY ORDINAL_POSITION とか、 select name from Sys.Columns where object_id = object_id('TestTable') を実行しても、空のデータしか表示されません。 何がまちがっているのか教えてください。

  • 前回の続き、配列から値を取得する方法。

    数日前にこちらで配列から値を取得する方法について質問させていただいた者です。 hanabutako様とshimix様にご回答いただきまして、無事問題解決することができました。 その際、hanabutako様のスクリプトを利用させていただいたのですが、 今回もその件について質問があります。 また、ご教授いただけますでしょうか。よろしくお願いいたします。 前回の質問↓ http://okwave.jp/qa/q8004813.html 以下のような配列の形で野菜の種類が50個以上あるとします。 その中から、特定の番号を選んで、その”全ての配列に格納されているデータ”を表示したいです。 前回は、特定の番号を選んで、その野菜の名前を表示するところまでは分かりましたが。 野菜の名前以外の配列はどのようにforeachに追記するかわかりませんでしたorz みなさん、よろしくお願いいたします。 取得したい野菜の名前の番号はひとつずつ改行で区切って テキストファイル(*.txt)に保存しています。 例↓ 1 7 36 45 50 array(50) {[0]=> array(4) { ["color"]=> string(6) "orange" ["name"]=> string(63) "とても発育がよいかぼちゃ。色はオレンジカラー " ["no"]=> string(7) "6587145" ["note"]=> string(17) "4月頃に種をまいた" } [2]=> array(4) ... [3]=> array(4) ... ~ [50]=> array(4) ... というように、0から50まであります。

    • ベストアンサー
    • PHP
  • VBA ファイル名の変更方法

    nameというファイル名を、testという「String型変数」が保持している文字列に変更させたいと思っています。 こういう場合には、どのような記載すればよいのでしょうか? (As以降の書き方がわかりません) Dim test as String Name ("C:\name.txt") As ("C\「test変数が保持している文字列」.txt")

  • servet(idに関連付くvalue値を取得する方法について)

    HTMLのフォーム内にある 「idに関連付くvalue値を取得する方法について」教えてください。 今はnameで取得しているのですが、 それが中々不便なものでServletでidのvalue値を取得したいと思っています。 【HTML】 ---------------------------------------------- <html> <head> <title>ID_VALUE_GET</title> </head> <body> <form name="form1"> <input type="text" id="id" name="name"> </form> </body> </html> ---------------------------------------------- 現在:  String インプット属性のnameのvalue値 = getAttribute(name); 考えている事:  String インプット属性のidのvalue値 = getAttribute(id); ということをしたいのですが可能でしょうか? (nameに対して、getAttribute(getParameter)をかけるのではなく、idに対してかける方法というのはありますでしょうか?)

    • ベストアンサー
    • Java
  • 同名ボタンのクリック時要素番号の取得方法

    <html> <head> <script Language="JavaScript"><!-- function doSentaku(btn) { //クリックされたボタンの要素番号が知りたい alert(btn.name); } // --></script> </head> <body> <form name="mainWin"> <input type="button" value="配列ボタンテスト1" name="testbtn" onClick="javaScript:doSentaku(this)"><br> <input type="button" value="配列ボタンテスト2" name="testbtn" onClick="javaScript:doSentaku(this)"><br> <input type="button" value="配列ボタンテスト3" name="testbtn" onClick="javaScript:doSentaku(this)"><br> </form> </body> </html> ----------------------------------------------------------------------------------------- このようなFromがあった場合、nameが同じである時、javaScriptではボタンのElemetは配列扱いになるかと思うのですが、doSentaku関数内ではnameは取得できるとして、クリックされた要素番号は取得できるのでしょうか? なお、訳ありでdoSentaku関数のボタンonClickの関数引数はすべて同じ定義しかできないものとします。 つまり個々ボタンを識別する値は指定できないと言うことです。 まことに申し訳ありませんが、どうかアドバイスのほどよろしくお願いします。

  • 抜け落ちている番号を取得する方法(Winsock利用)

    こんにちは。 A→Bというように、 送信端末Aから受信端末Bへパケットを送信する際に、sprintf関数を用いて、各送信パケットに対してナンバリングを行っています。 そして、受信端末において取得することができた番号と抜け落ちている番号を取得したいと思っています。 以下に、プログラムの概要を示します。 [送信側] char send_Buff[1500]; int sequence_Num = 0; //シーケンス番号のカウントアップ sequence_Num++; //sprintf関数にて、文字列格納 sprintf(send_Buff,"%d\0",sequence_Num); sendto関数を使用し、送信 [受信側] recv_Buf[1500]; int x; unsigned int count = 0; recvfrom関数にて送信端末からのパケットを受信し、recv_Bufに格納 count++; //recv_Bufの先頭要素からナル文字までを走査し、ナル文字をみつけたらナル文字の手前の要素までをreceive_seq_Numに格納 for(x=0;recv_Buf[x]!='\0';x++){  receive_seq_Num[count][x] = recv_Buf[x]; } 上記プログラムのように、記述したのですが・・・ [分からない点] 受信側にて、受信することができた各パケットのシーケンス番号のみを配列内に格納したいのですが、上記の記述方法で可能でしょうか? また、配列内に格納したシーケンス番号から抜け落ちているシーケンス番号を割り出したいのですが、どのような記述方法がありますでしょうか? 受信シーケンス番号;1,2,3,4,5,7,10,11,20,21,22・・・ 抜け落ちているシーケンス番号:6,8,9,12,13,14,15,16,17,18,19 ということです。 よろしくお願いします。

専門家に質問してみよう