Java 为什么这个方法和for循环执行的次数比我希望的要多?

Java 为什么这个方法和for循环执行的次数比我希望的要多?,java,for-loop,methods,Java,For Loop,Methods,我正在处理一个Java问题集,它要求一个特定的方法被执行N次(在本例中,N=5) 然而,出于某种原因,每次我运行程序时,它都会执行(或至少打印)10次。我想不出如何使它只打印5次 我对编程非常陌生,如果这是一个简单的修复,我深表歉意。谢谢你的帮助 public static void main (String [] args) { final int N = 5; int sum = 0; for (int i = 1; i <= N; i++) {

我正在处理一个Java问题集,它要求一个特定的方法被执行N次(在本例中,N=5)

然而,出于某种原因,每次我运行程序时,它都会执行(或至少打印)10次。我想不出如何使它只打印5次

我对编程非常陌生,如果这是一个简单的修复,我深表歉意。谢谢你的帮助

public static void main (String [] args)
{
    final int N = 5;
    int sum = 0;

    for (int i = 1; i <= N; i++)
    {
        drunkWalk();
        int stepCount = drunkWalk();
        sum += stepCount;

        if (i == N)
        {
            System.out.println ("Average # of steps equals " + (sum/N));
        }
    }
}       


public static int drunkWalk ()
{

    int start = 5;                      //initializes variables
    int steps = 0;
    int position = 0;
    System.out.println ("Here we go again...time for a walk!");

    do 
    {
       int direction = retInt ();

       if (direction%2 == 0)                //Determines if it will go left, towards home/0
       {
        position = start - 1;
       }

       else                         //Determines if it will go right, towards jail/10
       {
        position = start + 1;
       }

       start = position; 

       steps++;
    } while (position != 0 && position != 10);

    System.out.println ("Took " + steps + " steps, and");

    if (position == 0)
    {
       System.out.println ("Landed at HOME");
    }

    else 
    {
       System.out.println ("Landed in JAIL");
    }

    System.out.println ();

    return steps;                                //So the sum of the # of steps can continue to be calculated for the sum in main's for loop
}

public static int retInt ()                     //Returns odd or even integer to determine the direction in drunkWalk()
{
    return (int)(6 * Math.random ());
}
publicstaticvoidmain(字符串[]args)
{
最终整数N=5;
整数和=0;
对于(int i=1;i
你可以直接调用它两次。删除第一个只运行一次的。请注意,它也不会分配其返回值,因此它不会对返回的结果做任何处理


您可以直接调用它两次。删除第一个要遍历的程序只需一次。请注意,它也不会分配其返回值,因此不会对返回的结果执行任何操作。

尝试调试该程序。逐行执行该程序,您将看到所有内容。您正在调用walk()在for循环中执行2次。这是故意的吗?尝试调试程序。逐行执行它,您将看到所有内容。您正在调用在for循环中2次。这是故意的吗?非常感谢你的回答!你是对的,这绝对有效。你如何分配返回值?那部分也一直把我搞糊涂。你已经在第二行分配了返回值:
int stepCount=duckwalk();
。这里是
duckwalk()的结果
被分配给变量
stepCount
非常感谢您的回答!您是对的,这绝对有效。您如何分配返回值?这部分也让我很困惑。您已经在第二行分配了返回值:
int stepCount=duckwalk();
。这里是
duckwalk()的结果
被分配给变量
stepCount
drunkWalk();
int stepCount = drunkWalk();