Java 试图返回数组的和,方法调用错误
我试图返回数组的和,但是我没有使用递归对数组求和,数组的和返回为0。我正处在这样一个时刻,我想我可能忽略了一些事情。多看一眼会有帮助的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) {
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编辑答案,并解释了递归是如何工作的。