减去字符串

时间:2014-11-19 15:44:13

标签: java string methods

我正在编写游戏。我的大多数代码工作正常,但我有一些问题。游戏的要点是有一个初始组合,然后每个玩家每回合都会给出“下注”。我必须从组合中减去这些赌注,并在组合为“000”时宣布获胜的玩家。我遇到的问题是第二次下注(玩家二),我无法让减法工作。

以下是我应该得到的一个例子:

initial combination:
333
player one bet:122
211(after substracting digit individually)
player two bet:
211
=000
winner:player one

事情是,当涉及到玩家二时,我得到的值是“122”而不是“000”。我想知道我的代码是否有问题,以及我是否正确调用了方法(appliquerCoup),这是减法的方法。

谢谢!

           do{  
                if(num%2==0){
                   System.out.println(MessagesTp2.COUP_DU_JOUEUR1);
                 }else{
                  System.out.println(MessagesTp2.COUP_DU_JOUEUR2);
                 }
              coup=Clavier.lireString();
              rep=coupEstValide(combinaison,coup);
              while(rep!=true){
                System.out.println(MessagesTp2.COUP_INVALIDE);
                coup=Clavier.lireString();
               }

             nouvelleValeur=appliquerCoup(combinaison,coup);
             System.out.println("=>"+nouvelleValeur);
             num++;  
            }while(!nouvelleValeur.equals("000")); 
               if(nouvelleValeur.equals("000")){
                  if(num%2==0){
                   System.out.println(MessagesTp2.GAGNANT_JOUEUR1);
                   }else{
                  System.out.println(MessagesTp2.GAGNANT_JOUEUR2);
                }
              }

           }
    public static String appliquerCoup(String combinaison,String coup) {
       String nouveauCoup = "";
        if(combinaison!=null&&coup!=null){
        for(int i = 0; i < combinaison.length(); i++) {
            int a = Integer.parseInt(combinaison.substring(i, i + 1));
            int b = Integer.parseInt(coup.substring(i, i + 1));
            int c = a - b;
                if(c < 0){
                     c=0;
                    }else{
                        c=c;
                }  
                  nouveauCoup+=String.valueOf(c);
          }
     }
        return nouveauCoup;
  }     

1 个答案:

答案 0 :(得分:0)

问题似乎是,当您致电appliquerCoup(combinaison,coup)时,您总是从coup中减去combinaison,这是初始值。您将appliquerCoup的返回值分配给nouvelleValeur,但永远不会重新分配combinaison。因此,新赌注将始终从起始值中减去。

您可能想要更改行

do {
    [...]
    nouvelleValeur=appliquerCoup(combinaison,coup);
    System.out.println("=>"+nouvelleValeur);
    num++;  
} while(!nouvelleValeur.equals("000"));
if(nouvelleValeur.equals("000")){ [...] }

do {
    [...]
    combinaison=appliquerCoup(combinaison,coup);
    System.out.println("=>"+combinaison);
    num++;  
} while(!combinaison.equals("000"));
if(combinaison.equals("000")){ [...] }

您的代码还有其他一些风格问题(例如,您可以删除对combinaison.equals("000")的检查),但这可能是另一个问题的主题,因为这些问题似乎都不是gamebreaking。