2016-04-23 8 views
-1

私が研究している限り、文字列を変数と照合する方法はありません。おそらく私は間違った単語を使用しています、ここで私はマッチングによって意味するものです:
文字列等級= "a";
double a = 4.0;
文字列グレードの値をdouble aに関連付ける方法はありません。文字列とメソッドを一致させる方法はありますか?

同様に、私がしたいことは、Stringの値をメソッドに関連付けることです。たぶん私は間違ったトラックにいるので、達成しようとしていることについて簡単に説明しましょう。
クラスプレーヤーには、This.nameを返すString name()メソッドがあります。グラフィカルなデザインはなく、ユーザーがプログラムと通信する唯一の方法は入力です。基本的に、人が名前をタイプするとき、名前メソッドを実行したい。私はかなり新しいです、私はそれを行うと思うことができる唯一の方法は、ifステートメントの束を使用して、私が追加する各メソッドの別のifステートメントを追加する私には右の音はありません。

注:Stringを返す理由は、javax.swing.JTextAreaを使用してStringを返す入力を取得するためです。事前に

おかげ

+0

[反映](http://stackoverflow.com/questions/160970/how-do-i-invoke-a-java-method-when-given-the-method-name-as-a-あなたの提案した方法はおそらくあなたのニーズに十分です。 – Zong

+1

あなたの質問から、その名前に基づいてメソッドを呼び出すと思われます。そのメソッドはユーザーによって入力されます。その場合は、Reflection APIについての情報を参照してください。http://stackoverflow.com/questions/160970/how-do-i-invoke-a-java-method-when-given-the-method-name- as-a-string – Tunaki

+1

あなたは良い古いスイッチを使用することができます –

答えて

0

はい。これはMapと呼ばれています。ここで

は、いずれかを使用する方法のいくつかのサンプルコードです:

Map<String, Double> map = new HashMap<>(); 

map.put("grade", 4.0); 

double a = map.get("grade"); 

あなたが値型の多様性を保存したい場合はMap<String, Object>を使用しますが、返された値を取得して使用する場合に危険なキャストを行う必要がありますget()から。

0

のJavaは、PythonやPerlなどの動的なインタプリタ型言語ではありません。このようIntegerFloatBigDecimalたり、独自の値クラスとしてあなたはValueClassを関連付ける値ですMap<String,ValueClass>を使用する必要があります値と任意の文字列を関連付けること

0

グレードは通常のFに固定されているので、私は数値にenumにマップに各グレードを使用します。あなたはAグレードの数値を必要とするときGrade.A.getVal()を使用すると

enum Grade { 
    A(4.0), B(3.0) // etc... 

    private double val; 

    private Grade(double val) { 
     this.val = val; 
    } 

    public double getVal() { 
     return val; 
    } 
} 

関連する問題