【问题标题】:Java Declaring a variable in an if-statement [duplicate]Java在if语句中声明变量[重复]
【发布时间】:2014-08-26 06:36:35
【问题描述】:

我有一个同学问我这个问题,我不知道如何回答。

以下代码可以正常工作。

    int x = 40;
    int y = 35;
    if (x > y)
    {
        int ans = x + y;
    }

但是,下面的代码给出了一个错误,指出变量声明在它所在的位置是不允许的。为什么那里不允许? NetBeans 抛出以下异常:无法编译的源代码 - 错误的树类型:

    int x = 40;
    int y = 35;
    if (x > y)
        int ans = x + y;

如果重要的话,我们正在使用 NetBeans 8.0 Beta。

【问题讨论】:

  • 为什么会这样详细说明
  • NetBeans 正确编译了顶层代码,而底层代码告诉我那里不允许变量声明。我想知道为什么不允许这样做。感谢您的快速回复!
  • 不清楚它如何不能与您提供的信息一起使用。两者都会编译
  • 在底部代码 NetBeans 抛出异常:无法编译的源代码 - 错误的树类型:
  • 该信息应该是您问题的一部分,因为它是理解您的问题的关键。

标签: java variables if-statement declaration


【解决方案1】:

当您限定一个变量时,它只会在该范围内可用。

if (stuff) {
    int i;
    // i available here
}
// i not available here

第一种类型,编译器不知道你以后会不会用到这个变量。它认为在该块中创建变量没有任何问题。

在第二种类型中,编译器知道只有一个语句,因为您没有创建{} 块。您创建的变量肯定不会被使用,因此编译器会提醒您,您将永远无法使用您在此处定义的变量。

【讨论】:

  • 因为它不在一个块中,它会自动超出范围,所以它没用。我现在明白了。
【解决方案2】:

与其说是工作还是不工作的问题,这是一个语法错误。 不能在块外声明变量。

你为什么还要做第二种模式?谁会使用ans

【讨论】:

  • 定义“块外
猜你喜欢
  • 2015-06-29
  • 2016-01-13
  • 1970-01-01
  • 2013-01-15
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多