主增量循环中的增量if循环函数

时间:2017-09-24 13:34:02

标签: java arrays increment

我正在尝试制作一个Snake Vs块游戏,但是对于这部分代码,我只想从我的'count'变量中将值放在我的网格中。每次调用它时,我都不希望此变量设置为0。因此,我需要找到一种方法,以便每次调用时我的计数器都不会重置。

我正在尝试将增量循环函数放在main中,在它的增量循环中也是如此。

问题是,函数的值总是返回0,因为每次调用函数时它都会重置为零。 (因为循环)

每次调用它时如何阻止它重置为0?将它放在一个全局变量中是有效的,但我不能为我的任务做到这一点。

以下是我正在谈论的代码的两部分:

public static int choix_case (int nbColonnes) {
    int max = maximum(nbColonnes);
    int random_value = RandomValue();
    int count = 0;

    do {
       if ( random_value == 1) {
          count++;    
       }

       if (random_value == 2) {
          count++; 
       }

       if (random_value == 3) {
          count++;
       }

    } while(count <= max);

    return count;
}

然后:

public static void obtenirNouvelleGrille(int[][] grille, int nbLignes, int nbColonnes)
{
    for(int i = 0; i < nbLignes; i++) {
       // mettre le compteur de balles et de centres à 0
        for(int j = 0; j < nbColonnes;  j++){
            int choix = choix_case(nbColonnes);
            grille[i][j] = choix; // vide                
        }
    }
}

1 个答案:

答案 0 :(得分:0)

因此,听起来就像您希望在每次调用count时保存本地choix_case()字段一样。即,它应该在第一次调用时为零,然后每个后续调用应该&#34;记住&#34;以前的计数。

最简单的方法是让调用代码跟踪它,并将其传递给choix_case()

e.g:

int cumlativeCount = 0;
for(int i = 0; i < nbLignes; i++) {
       // mettre le compteur de balles et de centres à 0
        for(int j = 0; j < nbColonnes;  j++){
            final int choix = choix_case(nbColonnes, cumlativeCount);
            grille[i][j] = choix; // vide  
            cumulativeCount = choix;              
        }
    }

这假设可以更改choix_case()以接受另一个参数。

请注意这实际上并不是很棒的代码!您从choix_case()获得的价值有点无意义,因为您知道它是来自maximum(nbColonnes) +1的值。目前还不清楚choix_case()实际上做了什么,因为除了计数之外,它的所有字段都没有被使用过,而且这个计数很容易被调用者弄清楚。

也就是说,如果choix_case()表现完全相同,则表示完全相同:

do {
       if (random_value > 0) {
          count++;    
       }
    } while(count <= max);
return count;