Java 试图返回数组的和,方法调用错误

Java 试图返回数组的和,方法调用错误,java,for-loop,recursion,methods,Java,For Loop,Recursion,Methods,我试图返回数组的和,但是我没有使用递归对数组求和,数组的和返回为0。我正处在这样一个时刻,我想我可能忽略了一些事情。多看一眼会有帮助的 public class JavaSandbox { /** * @param args the command line arguments */ public static int sumDanceScore(int danceScore[], int first, int last) { if (first > last) {

我试图返回数组的和,但是我没有使用递归对数组求和,数组的和返回为0。我正处在这样一个时刻,我想我可能忽略了一些事情。多看一眼会有帮助的

public class JavaSandbox {

/**
 * @param args the command line arguments
 */
public static int sumDanceScore(int danceScore[], int first, int last)
{


  if (first > last) 
    {
      return 0;
    }
 else
    {
     int total = sumDanceScore(danceScore,first+1,last) + danceScore[first];
     return total;
    }
}
  public static void main(String[] args)
 {
    Scanner kbd = new Scanner(System.in);
    System.out.println("Enter number of contestants : ");

   int numContest = kbd.nextInt();
   int danceScore[] = new int[numContest + 1];
   int first = 0;
   int last = danceScore.length - 1;

   System.out.println("Enter dance scores: ");

  int numContestIndex;
  for (numContestIndex = 1; numContestIndex <= numContest; numContestIndex++) {
  danceScore[numContestIndex] = kbd.nextInt();
}

     int danceScoreTotal = sumDanceScore(danceScore, first, last);
     System.out.println("SUM DANCE SORE METHOD: "+danceScoreTotal);
     for(int danceScoreIndex = 1; danceScoreIndex <= danceScore.length-1; danceScoreIndex++)
  {
     int danceScoreShare = danceScore[danceScoreIndex] /  danceScoreTotal;
    System.out.println("DANCE SCORE SHARE "+danceScoreShare);
  }

}

}
公共类JavaSandbox{
/**
*@param指定命令行参数
*/
公共静态int-sumDanceScore(int-danceScore[],int-first,int-last)
{
如果(第一个>最后一个)
{
返回0;
}
其他的
{
int total=sumDanceScore(danceScore,first+1,last)+danceScore[first];
返回总数;
}
}
公共静态void main(字符串[]args)
{
扫描仪kbd=新扫描仪(System.in);
System.out.println(“输入参赛者人数:”);
int numContest=kbd.nextInt();
int danceScore[]=新int[numContest+1];
int first=0;
int last=danceScore.length-1;
System.out.println(“输入舞蹈分数:”);
int numontestindex;

对于(numContestIndex=1;numContestIndex,在填充数组之前,在代码中调用函数
sumDanceScore
。因此,传递一个填充了零的数组(作为默认值)到函数。

在填充数组之前,在代码中调用函数
sumDanceScore
。因此,将填充了零(作为默认值)的数组传递给函数。

如何修复:

  • 索引
    first
    初始化为零
  • 填充数组后的函数
    sumDanceScore
递归如何在您的
sumDanceScore
上工作

首先,对
First==0
last==danceScore.length-1
数组调用
sumDanceScore
。然后,
sumDanceScore
离开初始元素(在
First
位置)然后调用下一个
sumDanceScore
,位置移动1。此
first==1
,此变量与第一次调用
sumDanceScore
时不同。每次
first
置换,直到
first
last
匹配

这是正确的
main
body:

Scanner kbd = new Scanner(System.in);
System.out.println("Enter number of contestants : ");

int numContest = kbd.nextInt();
int danceScore[] = new int[numContest + 1];
int first = 0;
int last = danceScore.length - 1;

System.out.println("Enter dance scores: ");

int numContestIndex;
for (numContestIndex = 1; numContestIndex <= numContest; numContestIndex++) {
    danceScore[numContestIndex] = kbd.nextInt();
}

int danceScoreTotal = sumDanceScore(danceScore, first, last);

System.out.println("SUM DANCE SORE METHOD: " + danceScoreTotal);
Scanner kbd=新扫描仪(System.in);
System.out.println(“输入参赛者人数:”);
int numContest=kbd.nextInt();
int danceScore[]=新int[numContest+1];
int first=0;
int last=danceScore.length-1;
System.out.println(“输入舞蹈分数:”);
int numontestindex;
对于(numContestIndex=1;numContestIndex如何修复:

  • 索引
    first
    初始化为零
  • 填充数组后的函数
    sumDanceScore
递归如何在您的
sumDanceScore
上工作

首先,对
First==0
last==danceScore.length-1
数组调用
sumDanceScore
。然后,
sumDanceScore
离开初始元素(在
First
位置)然后调用下一个
sumDanceScore
,位置移动1。此
first==1
,此变量与第一次调用
sumDanceScore
时不同。每次
first
置换,直到
first
last
匹配

这是正确的
main
body:

Scanner kbd = new Scanner(System.in);
System.out.println("Enter number of contestants : ");

int numContest = kbd.nextInt();
int danceScore[] = new int[numContest + 1];
int first = 0;
int last = danceScore.length - 1;

System.out.println("Enter dance scores: ");

int numContestIndex;
for (numContestIndex = 1; numContestIndex <= numContest; numContestIndex++) {
    danceScore[numContestIndex] = kbd.nextInt();
}

int danceScoreTotal = sumDanceScore(danceScore, first, last);

System.out.println("SUM DANCE SORE METHOD: " + danceScoreTotal);
Scanner kbd=新扫描仪(System.in);
System.out.println(“输入参赛者人数:”);
int numContest=kbd.nextInt();
int danceScore[]=新int[numContest+1];
int first=0;
int last=danceScore.length-1;
System.out.println(“输入舞蹈分数:”);
int numontestindex;

对于(numContestIndex=1;numContestIndex要帮助SO用户查看您的代码,请格式化代码抱歉,让我尝试修复这一漫长的一天。您在计算sumA后请求输入要帮助SO用户查看您的代码,请格式化代码抱歉,让我尝试修复这一漫长的一天。您在计算sumA后请求输入Nataly你能告诉我为什么当我试图用sumDanceScore除以我的danceScore数组索引时,我的所有danceScore数组槽都是0。我已经编辑了代码。@davidwillams编辑答案,并解释了递归是如何工作的。Anatoly你能告诉我为什么我试图分割我的Dance数组槽吗由sumDanceScore创建的eScore数组索引我的所有danceScore数组插槽都有0。我已经编辑了代码。@davidwillams编辑答案,并解释了递归是如何工作的。