Java链表节点平均值计算后无法正常打印输出应如何解决
问题原因
- 累加逻辑颠倒:
getAvg方法中的累加语句写反,你本应该将节点数值累加到总和变量total,实际写为temp.a += total,导致total始终保持初始值0,无法统计节点总和。 - 缺少指针移动逻辑:循环体内没有编写
temp = temp.next语句,遍历指针永远指向头节点,程序陷入死循环,无法执行到后续的平均值打印代码,所以看不到平均值输出。
解决方案
修正getAvg方法的逻辑即可,修改后的代码如下:
static double getAvg(Node head){ // 增加空链表校验,避免空指针和除以0异常 if (head == null) { return 0.0; } double total = 0; int numOfNodes = 0; Node temp = head; while(temp != null) { // 修正累加逻辑 total += temp.a; numOfNodes++; // 增加指针移动逻辑 temp = temp.next; } return total / numOfNodes; }
修改完成后运行程序,即可正常输出平均值,你给出的测试用例最终计算得到的平均值为45.3。
内容的提问来源于stack exchange,提问作者alex olivas
相关产品推荐
相关产品推荐

