2016-04-23 161 views
-1

据我研究,没有办法匹配一个字符串与变量。大概我用的是错误的词,这里是我的意思是匹配:
String grade =“a”;
double a = 4.0;
而且没有办法将String等级的值与double a相关联。有没有办法将String与方法进行匹配?

同样,我想要做的是将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动态解释语言。

任意字符串值与关联,你应该使用一个Map<String,ValueClass>,其中ValueClass是关联的值,如IntegerFloatBigDecimal或你自己的价值类。

0

因为等级通常是从A到F固定的,我会用一个enum地图每个年级的数值。当你需要A级的数值

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

    private double val; 

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

    public double getVal() { 
     return val; 
    } 
} 

然后用Grade.A.getVal()

相关问题