2011-10-31 96 views
2

我对编程非常陌生,由于某种原因,这个程序并没有计算出分数 - 当涉及到分数时,我的outprint始终为0(例如,它只是打印我们的分数:0分数:0)这是我的程序:得分没有被计算?

public static void main (String[] args){ 
    Scanner in = new Scanner(System.in); 
    boolean warmonger=false; 
    int playerScore=0; 
    int aiScore=0; 
    theIntro(); 
    for (int i=0;i<GAMES;i++){ 
     scoreCounter(playerScore, aiScore); 
     playerInput(in, warmonger, playerScore, aiScore); 
     } 
    } 


public static void scoreCounter(int playerScore, int aiScore){ 
    System.out.println("====="); 
    System.out.println("Our score: "+playerScore); 
    System.out.println("Their score: "+aiScore); 
    } 

public static void playerInput(Scanner in, boolean warmonger, int playerScore, int aiScore){ 
    System.out.print("What is your strategy this year? "); 
    String strat=in.next(); 
    if (strat.equalsIgnoreCase("peace")){ 
     peaceStrat(warmonger, playerScore, aiScore); 
     } 
    else if (strat.equalsIgnoreCase("war")){ 
     warStrat(warmonger, playerScore, aiScore); 
     } 
    else { 
     while (!strat.equalsIgnoreCase("peace") && !strat.equalsIgnoreCase("war")){ 
      System.out.print("Invalid strategy. Enter \"peace\" or \"war\": "); 
      strat=in.next(); 
      } 
     } 
    } 

public static void peaceStrat(boolean warmonger, int playerScore, int aiScore){ 
    String aiStrat=getStrategy("peace", warmonger); 
    if (aiStrat=="peace"){   
     playerScore+=3; 
     aiScore+=3; 
     System.out.println("peace"); 
     } 
    else if (aiStrat=="war"){ 
     aiScore+=5; 
     System.out.println("we lost"); 
     } 
} 

public static void warStrat(boolean warmonger, int playerScore, int aiScore){ 
    warmonger=true; 
    String aiStrat=getStrategy("war", warmonger); 
    if (aiStrat=="peace"){ 
     playerScore+=5; 
     System.out.println("we won"); 
     } 
    else if (aiStrat=="war"){ 
     playerScore+=1; 
     aiScore+=1; 
     System.out.println("tie"); 
     } 
} 

我需要以某种方式返回分数吗?

+1

一旦你解决了你的问题,你会击中另一个:'aiStrat ==“战争”'。这应该是:'aiStrat.equals(“战争”)'。请参阅:http://stackoverflow.com/questions/513832 –

回答

2
aiStrat=="peace" 

这不是你如何比较java中的字符串。它应该是

aiStrat.equals("peace"); 

您可能没有触及会导致分数更新的代码。

另外,更改

int playerScore=0; 
int aiScore=0; 

static int playerScore = 0; 
static int aiScore = 0; 

戴夫牛顿指出的那样,你需要移动的主要功能之外的这些变量。

+1

+1为字符串比较,我错过了。但是你不能只改变为'static int',你需要将它移到'main'函数之外。 –

2

您一直在修改分数的本地版本。在方法中修改int将不会修改中传递给方法的int

现在,您可以考虑将得分保留为“类变量”,即static int变量,在方法之外声明。

最终你可能想把它们作为实例变量包装起来;他们所属的地方取决于你最终如何分解应用程序的责任。