错误:Java中预期的标识符
我是Java的新学习者。 我学到了一些Java核心概念。 运行以下代码时,我得到了标识符预期错误:
class Sekar { public static int i,j,k; i = 900; static void max() { j = 100; if(i>j) { k=i; } else { k=j; } System.out.println("The maxmimum vale between"+i+"and"+j+"is :"+k); } public static void main(String[] args) { max(); } }
当我编译我的代码时,我收到以下错误:
error: identifier expected i = 900; ^
- 任何人都能解释为什么会发生这种错误吗?
- 当我谷歌关于标识符预期错误时,我发现当没有数据类型声明变量时会发生此错误,但我为所有变量i,j,k声明了这一点。
- 当我重新声明数据类型,同时将值设置为“i”,如
int i = 900
它可以工作。 为什么呢?
i = 900;
这是Java中的一个语句,它可以在Constructor或方法或初始化块中。
在您的情况下,您可以在max()
方法内移动它
当我重新声明数据类型,同时将值设置为“i”,如
int i = 900
它可以工作。 为什么呢?
在这里,您在相同的时间,相同的行中声明并将值赋给变量。
在此处查看更多详细信息, 此处有关于java语句,表达式
声明
陈述大致相当于自然语言中的句子。 声明形成一个完整的执行单元。 通过使用分号(;)终止表达式,可以将以下类型的表达式转换为语句。
- 作业表达
- 任何使用++或 –
- 方法调用
- 对象创建表达式
Hava看看Java:预期的标识符 :
i = 900;
是任何其他声明。 你不能在任何地方写声明。 它必须在方法/构造函数体中。 声明中的初始化变量称为定义,并且是此规则的例外。
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
如果你想初始化静态变量,你可以做2个(理智的)方法:在你声明它的地方初始化变量:
class Sekar { public static int i = 900, j,k; static void max() { j = 100; if(i>j) { k=i; } else { k=j; } System.out.println("The maxmimum vale between"+i+"and"+j+"is :"+k); } public static void main(String[] args) { max(); } }
或者在静态构造函数中执行:
class Sekar { public static int i, j,k; static { i = 900; } static void max() { j = 100; if(i>j) { k=i; } else { k=j; } System.out.println("The maxmimum vale between"+i+"and"+j+"is :"+k); } public static void main(String[] args) { max(); } }
另外,如果你想定义一个常量我建议使用final关键字。
j可以转换为局部变量 。
class Sekar { public static final int I = 900; static void max() { int k; int j = 100; if(I>j) { k=I; } else { k=j; } System.out.println("The maxmimum vale between"+I+"and"+j+"is :"+k); } public static void main(String[] args) { max(); } }
您可能想要做的是:
class Sekar { public static int i=900,j=100,k; static void max() { if(i>j) { k=i; } else { k=j; } System.out.println("The maxmimum vale between"+i+"and"+j+"is :"+k); } public static void main(String[] args) { max(); } }
但是,在这种情况下,我不鼓励您使用静态字段。 我建议你为你的方法制作i
, j
和k
参数。 当你在它的时候给它们描述性的名字。
另请注意, k
未显式初始化,因此默认设置为0
,因此永远不会达到您的else
子句。