在android studio中,我的if/else语句中的变量"output"显示为灰色(从未使用过),然后在我尝试使用它的最后一行时出现错误,说"无法解析符号输出".
码:
public void calculate(View view) { EditText userInput = (EditText) findViewById(R.id.user_input); String numString = userInput.getText().toString(); double num = new Double(numString).doubleValue(); CheckBox ozCheckBox = (CheckBox)findViewById(R.id.oz); boolean ozInput = ozCheckBox.isChecked(); CheckBox gCheckBox = (CheckBox)findViewById(R.id.g); boolean gInput = gCheckBox.isChecked(); if(ozInput == true) { double output = num*28.3495; } else { double output = num; } TextView textView = (TextView)findViewById( R.id.output_textview ); textView.setText( String.valueOf( output ) ); }
Jon Skeet.. 5
你正在声明块内的变量.任何局部变量都超出了声明它的块之外的范围.这就是为什么这些变量是灰色的 - 它们不会在任何地方使用,因为它们声明的块在声明后立即结束.
在这种情况下,使用条件运算符会更简单:
double output = ozInput ? num * 28.3495 : num;
这将替换您的整个if
/ else
语句,并在可以在您的setText
调用中使用的范围内声明该变量.
你正在声明块内的变量.任何局部变量都超出了声明它的块之外的范围.这就是为什么这些变量是灰色的 - 它们不会在任何地方使用,因为它们声明的块在声明后立即结束.
在这种情况下,使用条件运算符会更简单:
double output = ozInput ? num * 28.3495 : num;
这将替换您的整个if
/ else
语句,并在可以在您的setText
调用中使用的范围内声明该变量.