有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我试图在主循环中加入一个增量循环函数,它也是增量循环

问题是,函数的值总是返回到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) 个答案

  1. # 1 楼答案

    因此,听起来好像您希望在每次调用choix_case()时保存本地count字段。i、 例如,第一次调用时它应该为零,然后每个后续调用都应该“记住”上一次的计数

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

    例如:

    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()实际上做了什么,因为除了count之外,它的任何字段都没有被使用过,而且调用方很容易就能计算出这个计数

    也就是说,choix_case()的行为与以下情况完全相同:

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