我正在学习java的基础知识,我无法弄清楚为什么我不能在main方法中使用类。有人可以告诉我我的代码出错了吗?
主要班级
package Base;
class Game {
public static void main(String[] args){
Data gameData = new Data();
gameData.test();
System.out.println(score);
}
}
package Base;
public class Data {
public void test(){
int score = 100;
}
}
答案 0 :(得分:2)
您的代码存在的问题是您的main
方法正在尝试访问类Data
的局部变量。与字段和函数不同,其他类的局部变量对于嵌套 * 的相同级别的类是禁止的。
要解决此问题,请将score
设为Data
的成员变量,并添加一个getter方法来访问它:
public class Data {
// Declaring score here makes it an instance variable
private int score;
// Giving score a getter lets others access the value,
// but it does not let them set the new score
public int getScore() { return score; }
// test() method can be used to set the score to a specific value
public void test(){
score = 100;
}
}
现在,main
方法可以通过调用score
从Data
类访问getScore()
,如下所示:
public static void main(String[] args){
Data gameData = new Data();
gameData.test();
System.out.println(gameData.getScore());
}
* 嵌套类可以访问创建实例的函数的最终局部变量。
答案 1 :(得分:1)
变量score
仅在test()
类的方法Data
范围内,在调用test()
后它不会持续存在。< / p>
而不只是在score
中声明test()
,您可以将其返回:
public int test() {
int score = 100;
return score;
}
然后在您的主要内容中,您将存储来自test()
的回复:
int score = gameData.test();
此时它会根据您的需要打印得分。
答案 2 :(得分:1)
例如,您可以将参数分数添加到Data类,如此
package Base;
public class Data {
public int score = 0;
public void test(){
score = 100;
}
}
然后在游戏类中:
package Base;
class Game {
public static void main(String[] args){
Data gameData = new Data();
gameData.test();
System.out.println(gameData.score);
}
}