public static void main(String[] args) {
Player Anfallare = new Player("A");
Player Forsvarare = new Player("F");
MotVarandra(Anfallare.getDice(1), Forsvarare.getDice(1));
(...)
}
我在main函数中有什么,现在我自己创建了函数,
public static void MotVarandra(int a, int f){
if(f >= a){
Anfallare.armees-=1;
}else{
Forsvarare.armees-=1;
}
}
应该将对象的变量设置为 - = 1 ..但这不起作用,因为函数不知道Anfallare和Forsvarare是一个对象..
在这种情况下我该怎么办?
答案 0 :(得分:5)
您需要将Player
定义为类字段,而不是主方法内部。
对于Java的温和介绍,我建议你从这里开始阅读:
http://download.oracle.com/javase/tutorial/java/index.html
此外,这里有很棒的书籍建议:https://stackoverflow.com/questions/75102/best-java-book-you-have-read-so-far。其中一些书很适合开始学习。
此处示例:
public class Game {
private static Player Anfallare, Forsvarare; // <-- you define them here, so they are available to any method in the class
public static void main(String[] args) {
Anfallare = new Player("A"); // <-- it is already defined as a Player, so now you only need to instantiate it
Forsvarare = new Player("F");
MotVarandra(Anfallare.getDice(1), Forsvarare.getDice(1));
// ...
}
public static void MotVarandra(int a, int f){
if(f >= a){
Anfallare.armees-=1; // <-- it is already defined and instantiated
}else{
Forsvarare.armees-=1;
}
}
}
答案 1 :(得分:2)
虽然Aleadam的解决方案是迄今为止最好的答案,但你可以做的另一件事就是更改函数的参数:
public static void MotVarandra(Player a, Player f){
if(f.getDice(1) >= a.getDice(1)){
f.armees-=1;
}else{
a.armees-=1;
}
}
最终,您的最佳解决方案仅取决于您的计划正在做什么。可能是,这只是另一种看待它的方式。
作为旁注,请务必使用描述性命名技术,a和f稍微硬编码,只有在您的玩家只使用这些变量名称时才有意义。最好不要限制你的代码。