【问题标题】:How to use an element belonging to an if-else cycle outside the cycle?如何在循环外使用属于 if-else 循环的元素?
【发布时间】:2013-01-30 11:18:12
【问题描述】:

我需要使用 if-else 循环的变量作为方法的参数,或者让我们说 if-else 循环之外的某个地方但在同一个类中。

     public static String myvar;

                if(x > 5) {
                    myvar = 0 ;
                    Double  y = Double.parseDouble(myvar);
                    System.out.println("The value is: "+ y); }
                else
                {

                  Double  y= Double.parseDouble(myvar);
                  System.out.println("The value is: "+ y);
                }

所以每当我在循环之外的某个地方使用变量 y 时,它都无法解析为变量..如何在 if-else 循环之外使用这个变量?

【问题讨论】:

  • if-else 循环?没有循环,只有一个分支。
  • Java 中的所有变量都属于一个作用域。通常由大括号指定。当大括号关闭时,“y”不再“在范围内”。谷歌搜索“Java 范围”了解更多信息。

标签: java variables arguments if-statement


【解决方案1】:

只需在 if-else 之外声明变量,就在之前。

Double y = 0; if () y =X; else y =Y;

【讨论】:

  • Double y=0 无法编译
【解决方案2】:

您必须在 if-else 循环之外声明和初始化 y 变量。

您的声明 myvar = 0; 也不会编译为 myvar 是一个字符串。

String myvar = "0";
Double y = 0.0;

if(x > 5) {
  y = Double.parseDouble(myvar);
  System.out.println("The value is: "+ y);
} else {
  y= Double.parseDouble(myvar);
  System.out.println("The value is: "+ y);
}

【讨论】:

  • 我会将myvar 初始化为一个包含数字的字符串,例如"0",否则他会得到一个NumberFormatException。另请注意,y 不必初始化,因为它将由分支中的分配初始化。
【解决方案3】:

你有几个选择:

  • 您可以将其声明为类成员变量
  • 您可以在if/else所在的方法范围内声明它。

几个例子:

// as a member variable

public String myvar;
private Double y;

public void SomeMethod(int x)
{
    if(x > 5)
    {
        this.myvar = "0";
        this.y = Double.parseDouble(this.myvar);
        System.out.println("The value is: " + this.y);
    }
    else
    {
        this.y = Double.parseDouble(this.myvar);
        System.out.println("The value is: " + this.y);
    }

    // use this.y here
}

// as a method variable

public String myvar;

public void SomeMethod(int x)
{
    Double y;

    if(x > 5)
    {
        this.myvar = "0";
        y = Double.parseDouble(this.myvar);
        System.out.println("The value is: " + y);
    }
    else
    {
        y = Double.parseDouble(this.myvar);
        System.out.println("The value is: " + y);
    }

    // use y here
}

【讨论】:

    猜你喜欢
    • 2020-10-15
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 2015-10-28
    • 2017-08-02
    相关资源
    最近更新 更多