Java 为什么简单的for循环在onCreate方法中有效,而在MainActivity类中无效?
我正在学习Android,在Android的主活动类中遇到了一个异常的循环行为。考虑下面的代码:Java 为什么简单的for循环在onCreate方法中有效,而在MainActivity类中无效?,java,android,syntax-error,Java,Android,Syntax Error,我正在学习Android,在Android的主活动类中遇到了一个异常的循环行为。考虑下面的代码: public class MainActivity extends AppCompatActivity { int game_board[][] = new int[3][3]; int limit = 3; for(int row = 0; row < limit; row++){ for(int column = 0; column < lim
public class MainActivity extends AppCompatActivity {
int game_board[][] = new int[3][3];
int limit = 3;
for(int row = 0; row < limit; row++){
for(int column = 0; column < limit; column++){
game_board[row][column] = -1;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for(int row = 0; row < limit; row++){
for(int column = 0; column < limit; column++){
game_board[row][column] = -1;
}
}
}
}
MainActivity类中的for循环给了我一个编译时错误列表,所有这些错误都是语法性的,例如:error:expected,error:“;”应为循环的外部行。但是相同的嵌套for循环在onCreate方法中没有引起任何错误
发生这种情况的原因是什么?它是与UI线程有关还是只是一个基本概念?也重新启动了Android Studio,但仍然遇到同样的问题。提前感谢。这与UI线程无关-您不能直接将代码块放入类中。它必须驻留在方法、构造函数或初始值设定项块中。不能在类中编写代码;代码必须放在方法中
public class MainActivity extends AppCompatActivity {
int game_board[][] = new int[3][3];
void name_void(){
int limit = 3;
for(int row = 0; row < limit; row++){
for(int column = 0; column < limit; column++){
game_board[row][column] = -1;
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name_void();
}
}
有些答案解释得很好。基本上你可以把方法放在一个类里面,它本身,它应该放在一个方法里面,就像你提到的,在onCreate里面 我认为在某些特殊情况下,您确实希望您的方法不依赖于其他方法,比如onCreate。这一次你可以考虑让你的方法为静态。p> 静态意味着一旦创建了这个类,这个方法就是注册的,并且它不会依赖于其他子方法来响应这个类的真实实例 以您的代码为例,首先将循环包装在一个静态带注释的方法中: 公共静态void doForLoop{ int game_board[][]=新int[3][3]; 整数极限=3; forint行=0;行<限制;行++{ forint列=0;列<限制;列++{ 游戏板[行][列]=-1; } } } 然后可以在类本身内部调用这个doForLoop方法
如果您愿意,您可以了解更多关于静态方法和静态变量的信息。@RishabParmar是的-这些被称为Darn it!我错误地删除了我自己的评论。无论如何,对于任何引用此线程的人,我在这篇评论中提出的问题是,我们是否可以在类中的方法之外初始化/声明变量,您可以引用上面的评论作为答案。您不能在类中编写代码这没有意义,您可以在类中编写代码,只是不能在此类代码中编写: