在android studio中,我的if / else语句中的变量“output”显示为灰色(从未使用过),然后在我尝试使用它的最后一行时出现错误,说“无法解析符号输出”
代码:
> db.Releases.find({epoch_time: {$gte: 1451417675, $lt: 1483717675}})
{ "_id" : ObjectId("5682bbcbab755688f9bfd939"), "release_id" : 3, "event_id" : 1, "epoch_time" : 1451417675 }
{ "_id" : ObjectId("5682bbccab755688f9bfd93a"), "release_id" : 4, "event_id" : 2, "epoch_time" : 1452717675 }
{ "_id" : ObjectId("5682bbccab755688f9bfd93b"), "release_id" : 5, "event_id" : 2, "epoch_time" : 1453717675 }
{ "_id" : ObjectId("5682bbccab755688f9bfd93c"), "release_id" : 6, "event_id" : 3, "epoch_time" : 1461207675 }
{ "_id" : ObjectId("5682bbccab755688f9bfd93d"), "release_id" : 7, "event_id" : 3, "epoch_time" : 1461407675 }
{ "_id" : ObjectId("5682bbccab755688f9bfd93e"), "release_id" : 8, "event_id" : 4, "epoch_time" : 1461417675 }
{ "_id" : ObjectId("5682bbccab755688f9bfd93f"), "release_id" : 9, "event_id" : 1, "epoch_time" : 1472717675 }
{ "_id" : ObjectId("5682bbd1ab755688f9bfd940"), "release_id" : 10, "event_id" : 5, "epoch_time" : 1473717675 }
答案 0 :(得分:5)
您正在声明块内的变量。任何局部变量都超出了它声明的块之外的范围。这就是为什么这些变量是灰色的 - 它们不会在任何地方使用,因为它们声明的块在声明之后立即结束。
在这种情况下,使用条件运算符会更简单:
double output = ozInput ? num * 28.3495 : num;
它取代了您的整个if
/ else
语句,并在setText
调用中可以使用的范围内声明该变量。
答案 1 :(得分:0)
您的变量使用超出范围 - 请参阅我的评论:
boolean gInput = gCheckBox.isChecked();
if(ozInput == true) {
//declared inside block
double output = num*28.3495;
//end of block - output becomes unknown
} else {
//declare inside block
double output = num;
//end of block - outpt becomes unknown
}
TextView textView = (TextView)findViewById( R.id.output_textview );
// output not known
textView.setText( String.valueOf( output ) );
最简单的解决方法是预先分配else-value:
double output = num;
if(ozInput == true) {
//reassign value
output = num*28.3495;
}
//name output still known