在我的应用程序中,我想动态地更改变量的值,基于字符串。这是我试过的
public void onClick(View v)
{
switch (v.getId())
{
case R.id.btCalculate:
int column = Integer.parseInt((String) spColumn
.getSelectedItem());
int inch = Integer.parseInt((String) spInch.getSelectedItem());
int colum_inch = column*inch ;
int MULTIUPLIER ;
if (page_number=="FirstPage(Color)Minimum12Maximum80ColumnInch-14500PerColumn/Inch")
{
MULTIUPLIER=20;
}
else if (page_number=="3rd Page Color: 9000") {
MULTIUPLIER=9000;
}
else {
MULTIUPLIER=10;
}
if (colum_inch<4) {
tvAmount.setText(page_number);
} else {
tvAmount.setText((MULTIUPLIER *colum_inch) + "");
}
break;
}
}
此处变量 page_number 是存储点击按钮文本的字符串。在我之前的活动中,我有两个按钮,一个按钮文本是“FirstPage(Color)Minimum12Maximum80ColumnInch-14500PerColumn / Inch”另一个“3rd Page Color:9000”。但问题出在我的外面,MULTIPLIER始终设置为“10”。无论我点击了哪个按钮。我该如何解决这个问题。如何根据单击按钮的文本更改该变量(MULTIPLIER)的值。
答案 0 :(得分:4)
您无法使用==
相等运算符比较字符串。 ==
测试2个对象是否是同一个对象。
改为使用.equals()
。
由于string interning
,此陈述可能或可能不是,但您无法控制。
page_number=="FirstPage(Color)Minimum12Maximum80ColumnInch-14500PerColumn/Inch"
这将始终有效。
page_number.equals("FirstPage(Color)Minimum12Maximum80ColumnInch-14500PerColumn/Inch")
答案 1 :(得分:2)
使用equals
而不是==
这是java比较字符串的方式