Java 此方法不会将对象插入ArrayList。为什么? public void addgramb(字符串peakName,int-grambtime){ 对于(int i=0;i
,函数将执行以下两项操作之一:Java 此方法不会将对象插入ArrayList。为什么? public void addgramb(字符串peakName,int-grambtime){ 对于(int i=0;i,java,Java,,函数将执行以下两项操作之一: 如果gramplist最初为空,或者最初仅包含一个元素,则测试i
- 如果
最初为空,或者最初仅包含一个元素,则测试gramplist
将失败,因此函数将立即返回,不执行任何操作i
- 如果
最初包含多个元素,那么测试gramplist
将始终成功,因为每次通过循环都会向i
添加一个元素,并将gramplist
增加一个。因此i
在迭代之前为真,然后在迭代之后为真。因此,您有一个无限循环i
我认为这两个函数都不是您想要的。根据初始条件,您的函数将执行以下两个操作之一:
- 如果
最初为空,或者最初仅包含一个元素,则测试gramplist
将失败,因此函数将立即返回,不执行任何操作i
- 如果
最初包含多个元素,那么测试gramplist
将始终成功,因为每次通过循环都会向i
添加一个元素,并将gramplist
增加一个。因此i
在迭代之前为真,然后在迭代之后为真。因此,您有一个无限循环i
我认为这两个都不是你想要的。基本上你是在整个列表中循环,每次循环都添加一条记录。 您可能需要以下内容:
public void addClimb(String peakName, int climbTime){
for(int i = 0; i < climbList.size()-1; i++){
if(peakName.substring(0,1).compareTo(climbList.get(i).getName().substring(0,1)) <= 0){
climbList.add(i, new ClimbInfo(peakName, climbTime));
} else {
climbList.add(new ClimbInfo(peakName, climbTime));
}
}
}
public void addgramb(字符串peakName,int-grambtime){
对于(int i=0;i=0){
添加(i,新的攀登信息(peakName,攀登时间));
返回;
}
}
添加(新的攀登信息(peakName,攀登时间));
}
基本上,您是在整个列表中循环,每次循环都会添加一条记录。
您可能需要以下内容:
public void addClimb(String peakName, int climbTime){
for(int i = 0; i < climbList.size()-1; i++){
if(peakName.substring(0,1).compareTo(climbList.get(i).getName().substring(0,1)) <= 0){
climbList.add(i, new ClimbInfo(peakName, climbTime));
} else {
climbList.add(new ClimbInfo(peakName, climbTime));
}
}
}
public void addgramb(字符串peakName,int-grambtime){
对于(int i=0;i=0){
添加(i,新的攀登信息(peakName,攀登时间));
返回;
}
}
添加(新的攀登信息(peakName,攀登时间));
}
您未能解释问题所在
此方法未正确地将爬升信息插入爬升时间
没有告诉我发生了什么。运行时异常?编译错误?还是最后留下一个空集合
如果收到异常,请将其与堆栈跟踪一起包含
如果我们假设您有一个空集合,那只能意味着一件事:永远不会达到for循环条件。我可以肯定地说,这是因为If语句有一个else插入。因此,循环的每次迭代都保证插入。因此,循环不能迭代
我怀疑是尺寸检查的问题
public void addClimb(String peakName, int climbTime){
for(int i = 0; i < climbList.size(); i++){
if(peakName.substring(0,1).compareTo(climbList.get(i).getName().substring(0,1)) >= 0){
climbList.add(i, new ClimbInfo(peakName, climbTime));
return;
}
}
climbList.add(new ClimbInfo(peakName, climbTime));
}
for(int i=0;i
这种逻辑几乎肯定是错误的,原因有两个:
你没有解释问题是什么 此方法未正确地将爬升信息插入爬升时间 没有告诉我发生了什么。运行时异常?编译错误?还是最后留下一个空集合 如果收到异常,请将其与堆栈跟踪一起包含 如果我们假设您有一个空集合,那只能意味着一件事:永远不会达到for循环条件。我可以肯定地说,这是因为If语句有一个else插入。因此,循环的每次迭代都保证插入。因此,循环不能迭代 我怀疑是尺寸检查的问题
public void addClimb(String peakName, int climbTime){
for(int i = 0; i < climbList.size(); i++){
if(peakName.substring(0,1).compareTo(climbList.get(i).getName().substring(0,1)) >= 0){
climbList.add(i, new ClimbInfo(peakName, climbTime));
return;
}
}
climbList.add(new ClimbInfo(peakName, climbTime));
}
for(int i=0;i
这种逻辑几乎肯定是错误的,原因有两个:
您不应该在迭代列表时修改它 我假设您在这里试图实现的是自定义排序。为此,您必须在
grampinfo
中实现可比较的接口,并使用Collections.sort(gramplist)
阅读更多信息。在迭代列表时不应修改列表 我假设您在这里试图实现的是自定义排序。为此,您必须在
climpinfo
中实现可比较的接口,并使用