我创建了这个植物种植的程序。西红柿并指定它们成熟的日期(以单位为单位)。但是,当我尝试使用该日期时,系统会返回错误列表索引超出范围。'我不能为我的生活理解为什么会这样。请理解我是一名初学程序员,所以虽然我确实在寻找这个问题的答案,但我发现的很多东西对我来说都是完全的胡言乱语。谢谢!
import java.util.Scanner;
import java.util.ArrayList;
public class PalindromeNums{
public static void main(String [] args){
Scanner input = new Scanner(System.in);
int start,end,rem,rev=0,temp;
ArrayList <Integer> palindrome = new ArrayList<>();
System.out.print("Start : ");
start = input.nextInt();
System.out.print("End : ");
end = input.nextInt();
temp = start;
for(int i = start; i <= end; i++){
while(temp != 0){
rem = temp % 10;
rev = rev * 10 + rem;
temp = temp / 10;
}
System.out.println(rev);
if(i == rev){
palindrome.add(i);
}
temp++;
rev = 0;
}
System.out.println(palindrome);
}
}
(在某处可能存在缩进错误,忽略这一点。我将它作为代码放入堆栈溢出文本框时遇到了麻烦)
答案 0 :(得分:1)
在函数check_harvest()
中,growing
字典的长度可能与grown
列表的长度不同。
plant()
会将amount
个项目添加到growing
,但只有一个项目会添加到grown
。因此,如果amount
大于1,则字典和列表长度将会不同。
然后check_harvest()
在growing
的长度上进行迭代,这可能会超过grown
,从而导致尝试访问grown
中超出限制范围的项目列表。
如果缩进两行,它可能会解决问题:
grown.append("tomato_" + str(tomato_id)) #this list is so I can run a for loop using numbers (there's probably a better way to do this idk)
tomato_id += 1
这样它们就在for循环中:
for i in range(amount):
if tomato_seeds > 0:
tomato_seeds -= 1
tomato_planted += 1
growing["tomato_" + str(tomato_id)] = turn + 5 #this creates a library that contains tomatoes and their turn of harvest
grown.append("tomato_" + str(tomato_id)) #this list is so I can run a for loop using numbers (there's probably a better way to do this idk)
tomato_id += 1
但我无法确定,因为我不太了解您的代码。