这是错误:
我的代码:
def isVariable(line):
modifier = ['private','protected','public']
datatype = ['String','int','float','boolean']
status = False
linelist = list(line.split())
if(linelist[0] in modifier):
if(linelist[1] in datatype):
if(';' in linelist[len(linelist)-1]):
status = True
return status
else:
return status
f = open('Student.java','r')
vList = []
for line in f:
status = isVariable(line)
if status == True:
vList.append(line)
print(vList)
怎么了?
答案 0 :(得分:0)
出现错误是因为在该行代码中,
linelist
为空,因此,您无法获取列表的第一个(索引0
)元素。
它可以为空的原因是文件中的空行。
答案 1 :(得分:0)
文件中的其中一行似乎是空的,因此调用list(line.split())
将返回一个空列表。因此,没有第零个元素,用IndexError
括起来。您可以添加一些try ... except ...
块来处理此错误。试试:
def isVariable(line):
modifier = ['private','protected','public']
datatype = ['String','int','float','boolean']
status = False
linelist = list(line.split())
try:
has_modifier = linelist[0] in modifier
except IndexError:
return status
try:
has_datatype = linelist[1] in datatype
except IndexError:
return status
try:
has_semicolon = ';' in linelist[-1]
except IndexError:
return status
if(has_modifier and has_datatype and has_semicolon):
status = True
return status
else:
return status
f = open('Student.java','r')
vList = []
for line in f:
status = isVariable(line)
if status == True:
vList.append(line)
print(vList)