当前位置:  开发笔记 > 编程语言 > 正文

Java - 为什么我的if/else语句无法正常工作?

如何解决《Java-为什么我的if/else语句无法正常工作?》经验,为你挑选了1个好方法。

在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调用中使用的范围内声明该变量.



1> Jon Skeet..:

你正在声明块内的变量.任何局部变量都超出了声明它的块之外的范围.这就是为什么这些变量是灰色的 - 它们不会在任何地方使用,因为它们声明的块在声明后立即结束.

在这种情况下,使用条件运算符会更简单:

double output = ozInput ? num * 28.3495 : num;

这将替换您的整个if/ else语句,并在可以在您的setText调用中使用的范围内声明该变量.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有