我正在研究一个电阻器的类,我想给出一个公差数,然后将该公差值的颜色吐出来。我已经使用了与其他int值相同的精确方法,但是这个双重值不起作用,我无法弄清楚原因。任何人都可以帮忙。我已经尝试在所有案例编号的末尾添加'd'以确保它们是双打的,但没有修复它以便这不是问题。
public static String toleranceColor(double tolerance)
{
String band1 = null;
switch (tolerance)
{
case 1: band1 = "BROWN"; break;
case 2: band1 = "RED"; break;
case 0.5: band1 = "GREEN"; break;
case 0.25: band1 = "BLUE"; break;
case 0.1: band1 = "VIOLET"; break;
case 0.05: band1 = "GREY"; break;
case 5: band1 = "GOLD"; break;
case 10: band1 = "SILVER"; break;
case 20: band1 = "NONE"; break;
default: band1 = "INVALID TOLERANCE"; break;
}
}
答案 0 :(得分:0)
您的问题是,您正在尝试将double
用于switch
案例。 switch
仅应用于离散值的问题,请考虑使用枚举作为替换值或将值乘以100并将其转换为Integer
。
答案 1 :(得分:0)
您可以将double
数字转换为整数并获得相同的解决方案。您不能将double
与开关一起使用。
public static String toleranceColor(double tolerance)
{
String band1 = null;
switch ((int)(tolerance*100))
{
case 100: band1 = "BROWN"; break;
case 200: band1 = "RED"; break;
case 50: band1 = "GREEN"; break;
case 25: band1 = "BLUE"; break;
case 10: band1 = "VIOLET"; break;
case 5: band1 = "GREY"; break;
case 500: band1 = "GOLD"; break;
case 1000: band1 = "SILVER"; break;
case 2000: band1 = "NONE"; break;
default: band1 = "INVALID TOLERANCE"; break;
}
}
答案 2 :(得分:0)
构建HashMap<Double,String>
以存储所有值,并填充它。静态初始化程序将是一个很好的地方,因为你永远不会改变它,你只想做一次。
然后,使用地图的case
方法,而不是get
语句。