【问题标题】:Declaring a variable inside a if else statement?在 if else 语句中声明变量?
【发布时间】:2014-06-23 03:28:09
【问题描述】:

我对 Java 编程还是很陌生,所以我有一个问题。 我可以像 for 循环一样在 if-else 语句中声明变量吗?

    for (int i=0; i<10; i++)



    int test;
    if (test=6;test ==9;) {
        System.out.println("Yes");
    }
    else {
        System.out.println("No");
    }

【问题讨论】:

  • 好吧,你为什么不试试看?如果编译器抱怨,那么你所做的就是不对的。
  • 代码是否适合 if 语句? “测试 == 9;”还是应该只是“test == 9”?
  • 您可以使用按位包含的 OR |逻辑与

标签: java if-statement for-loop


【解决方案1】:

不,你不能那样做。 if 语句中圆括号内的内容必须是提供boolean 值的单个表达式。在 Java 中,变量声明永远不是表达式。

假设您正在尝试声明 test 以使其范围仅限于 if/else 语句,那么这是如何做到的:

public void someMethod() {
    ....
    { // nested block to limit the scope of 'test'
        int test = 6;
        if (test == 9) {
            System.out.println("Yes");
        }
        else {
            System.out.println("No");
        }
    }
}

(这个例子没有多大意义,但我认为它不是故意的。)

【讨论】:

  • 哇,不知道你可以在方法中嵌套块。它们有什么缺点吗,或者它们只是一种范围限制机制,没有任何其他影响?
  • 没有性能劣势。我想它们会降低可读性。
【解决方案2】:

这是错误的

if (test=6;test ==9;) {
        System.out.println("Yes");
    }
    else {
        System.out.println("No");
    }

if() 中不能有分号

你这样做的方式叫做初始化(test=6;),这是不允许的。如果像if(test==6),你可以只比较里面的2个变量

请记住,java If 只接受 booleantruefalse(不像 javascript 中接受大于 1 的任何值)

【讨论】:

  • 所以这意味着我不能在 if-else 语句中声明变量?
  • @user3744056 你这样做的方式叫做初始化test=6如果你不能在里面初始化
  • 等等,if 语句中绝对允许初始化。见here。它实际上是错误的根源,因为程序员不小心分配而不是比较。
  • @user3744056 您不能在if 语句中声明变量。但是,您可以分配给一个。
  • 你的陈述太宽泛了。您是说不允许初始化,这显然是错误的。您需要说,不允许初始化不是 boolean 的变量 或类似的东西,或类似“不允许初始化 在这种情况下。那些多余的词会限制你的陈述的范围,所以它不再是错误的。如果你说错了,你的陈述是基于什么并不重要。
【解决方案3】:

java 中条件或决策语句中的表达式必须计算为布尔值(真/假)。即使是以下情况也不会编译:

if(null){}
if(0){}

等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-12
    • 2012-04-21
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 2013-01-15
    相关资源
    最近更新 更多