【问题标题】:javac says int (x = 1); is not a statement then says ';' expected. What's wrong with my code?javac 说 int (x = 1);不是陈述然后说';'预期的。我的代码有什么问题?
【发布时间】:2011-01-25 02:00:15
【问题描述】:

我正在尝试学习 Java 的 Mac Mini G4。当我尝试通过在终端输入“javac DooBee.java”来编译“DooBee.java”时,出现两个错误。这是我的终端的样子:

> nephi-shields-mac-mini:/developer/MyProjects
> nephishields$ javac DooBee.java
> DooBee.java:5: not a statement
>                 int (x = 1);
>                 ^ DooBee.java:5: ';' expected
>                 int (x = 1);
>                     ^ 2 errors nephi-shields-mac-mini:/developer/MyProjects
> nephishields$

这是我在“DooBee.java”文件中输入的内容:

public class DooBee {
    public static void main (String[] args) {
        int (x = 1);

        while (x < 3) {
            System.out.print ("Doo");
            System.out.print ("Bee");
            x = x + 1;
        }

        if (x == 3) {
           System.out.print ("Do");
        }
    }
}

我做错了吗?还是我的电脑有问题?抱歉,如果这个问题(或类似问题)已经被问过。老实说,我试图自己找到答案(谷歌搜索,搜索 Stack Overflow,多次重写我的代码,检查了我的书“Head First Java”以确保我以正确的方式输入内容)但结果是空的。

【问题讨论】:

  • 当你声明一个变量时(例如:当你声明整数类型的x时)你不要把(..)写成type variablename = value所以int x = 1;你做当您想在条件语句(如 Ifs 和 Whiles 等)中使用该变量时需要括号......希望这会有所帮助:)

标签: java macos compilation osx-tiger


【解决方案1】:

问题是(x = 1)是表达式,不是声明,所以不能用来声明变量x。去掉括号,你就会有一个正确的初始化器声明。

【讨论】:

    【解决方案2】:

    正确的声明是:

    public class DooBee {
        public static void main (String[] args) {
            int x = 1;
            ...
        }
    }
    

    【讨论】:

      【解决方案3】:

      记住您在 Java 中的操作顺序。括号内的项目首先被评估,因此 (x=1) 被评估,这在 Java 中甚至没有真正意义,因此出现错误。

      通常,您只会在强制转换、if、while、else if、else 和 for 语句之后的子句或在您希望布尔逻辑非常清晰的情况下使用括号。

      【讨论】:

      • 它实际上与公认的语法有关,而不是评估顺序,而是一个可接受的答案。
      【解决方案4】:
      int (x = 1);
      

      替换为

      int x = 1;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-12
        • 1970-01-01
        • 1970-01-01
        • 2018-01-15
        • 1970-01-01
        相关资源
        最近更新 更多