Java 为什么我的代码中字符串比较失败?

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是保存所选字符串

我在中有一个数组,其中包含表示电缆尺寸的数字(1、1.5、2.5等),存储为字符串

在我的程序中,数组被加载到一个微调器中,该微调器工作正常。 但是,当项目被选中并存储在变量中时,我想检查选中的字符串,并将另一个数值变量设置为2.5,以便稍后在程序中进行计算

我尝试了以下方法:

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);