我目前正在尝试根据用户在下拉菜单中选择的内容添加条件。如果选择了第一项,则textView上输入的数据将被乘以34,否则第二项将被乘以18。到目前为止,我可以测试第一个选择是否可以正常工作,但是不会选择第二个选择。有人可以向我解释解决这种情况的正确方法吗?这就是我的代码的样子。
public class CatalinaFerryTickets extends AppCompatActivity{
String[] ferryRoutes = new String[]{"To Catalina Island", "To Long Beach"};
private Button renderBtn;
EditText handleData;
TextView displayData;
@Override
protected void onCreate(Bundle savedInstanceState) {
// RENDER SPINNER TO DEVICE
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_catalina_ferry_tickets);
final Spinner spin=findViewById(R.id.mySpinner);
final ArrayAdapter<String> myAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, ferryRoutes);
spin.setAdapter(myAdapter);
renderBtn=findViewById(R.id.button);
displayData=findViewById(R.id.textView);
displayData.setMovementMethod(new ScrollingMovementMethod());
renderBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleData=findViewById(R.id.editInput);
int ticketAmount = Integer.parseInt(handleData.getText().toString());
int total;
// FAULTY CONDITIONAL STATEMENT
if (ferryRoutes[0] == "To Catalina Island"){
total = ticketAmount * 34;
displayData.setText(Integer.toString(total));
}
else{
total = ticketAmount * 18;
displayData.setText(Integer.toString(total));
}
}
});
}
}
答案 0 :(得分:1)
您不是在检查所选内容,而是在检查静态数组中的值。因此,它将总是需要一个分支。如果要基于微调框的选择来做某事,则需要实际查询微调框以选择什么。
答案 1 :(得分:1)
这里的问题是ferryRoutes
数组从未链接到下拉组件。
因此,条件
if (ferryRoutes[0] == "To Catalina Island")
将始终为true
,并且将永远不会执行else
块。
此外,切勿使用引用相等运算符(String
)比较==
。使用equals
if ("To Catalina Island".equals(ferryRoutes[0]))
您可能很幸运能实习String
,这将使相等运算符起作用。但是,一般不要这样做。