Java 为什么我的代码中字符串比较失败?
我在中有一个数组,其中包含表示电缆尺寸的数字(1、1.5、2.5等),存储为字符串 在我的程序中,数组被加载到一个微调器中,该微调器工作正常。 但是,当项目被选中并存储在变量中时,我想检查选中的字符串,并将另一个数值变量设置为2.5,以便稍后在程序中进行计算 我尝试了以下方法:Java 为什么我的代码中字符串比较失败?,java,string,comparison,Java,String,Comparison,我在中有一个数组,其中包含表示电缆尺寸的数字(1、1.5、2.5等),存储为字符串 在我的程序中,数组被加载到一个微调器中,该微调器工作正常。 但是,当项目被选中并存储在变量中时,我想检查选中的字符串,并将另一个数值变量设置为2.5,以便稍后在程序中进行计算 我尝试了以下方法: if (conductorSize = "1" ) {conCsa = 1;} else if (conductorSize = "1.5") {conCsa = 1.5;} conductorSize是保存所选字符串
if (conductorSize = "1" ) {conCsa = 1;}
else if (conductorSize = "1.5") {conCsa = 1.5;}
conductorSize
是保存所选字符串的变量,而conCsa
是变量
设置为数值变量进行计算
编译器说我不能将字符串转换为布尔值。发生了什么事?如果要进行字符串比较,请使用.equals() 示例取自:
String s=“something”,t=“maybe something”;
if(s==t)//合法,但通常是错误的。
if(s.equals(t))//RIGHT正如Ed s.指出的那样,您正在使用赋值运算符。但是,由于要比较字符串
,因此需要使用equals
方法
if ("1".equals(conductorSize)) {conCsa = 1;}
else if ("1.5".equals(conductorSize)) {conCsa = 1.5;}
或者,您可以从字符串创建一个新的浮点值
:
float conCsa;
try {
conCsa = Float.parseFloat(conductorSize);
}catch(NumberFormatException e){
conCsa = 0.0f; //set to a default value
}
看起来你想做的事情最好用以下方式表达:
conCsa = Double.parseDouble(conductorSize);
通常需要使用.equals()方法。
如果性能非常重要,并且您正在与字符串文本进行比较,请查看。它将允许您进行超级快速==比较,并避免像.equals()中那样进行完整的逐字符扫描。
不过,要证明这种非标准方法的合理性,性能必须非常非常重要。当电缆尺寸为常数时,需要使用枚举,这将有助于减少if条件比较的次数。该死,我今天的投票限制已经过了。我要投票表决这个答案!或Double.parseDouble(conductorSize)
如果需要/首选双精度。如果您满意,请单击问题一侧的复选标记接受答案。=)
conCsa = Double.parseDouble(conductorSize);