我正在制作一个口袋妖怪类型的对战计算器(水击火等),我发现了一个相当奇怪的错误。我正在迭代一个包含该神奇宝贝的所有弱点的ArrayList,并将它们与所有阻力进行比较,以查看是否有任何抵消。 {GntHub上的Here's存储库。异常是在src / main / Pokemon.java的第140行抛出。当项目被删除时,我已经考虑了索引的变化,但仍然没有运气。这是令人不快的循环:
//Check 2x weakness v 2x Resist
eDiff = 0;
rDiff = 0;
for (int e = 0; e < effective.size()-eDiff; e++) {
for (int r = 0; r < resist.size()-rDiff; r++) {
if (effective.get(e-eDiff).equals(resist.get(r-rDiff))) {
effective.remove(e-eDiff);
resist.remove(r-rDiff);
eDiff++;
rDiff++;
}
}
}
有什么想法吗?
答案 0 :(得分:2)
例如,当 var webpack = require('webpack');
module.exports ={
entry: ["./js/app.js"],
output: {
path: "./js",
filename:"bundle.js"
},
module:{
loaders: [
{
test: [/\.es6$/, /\.js$/],
exclude: /(css|plugins|node_modules)/,
loader: 'babel-loader',
query: {
cacheDirectory: true,
presets: ['react', 'es2015']
}
},
{
test: [/\.scss$/],
loaders: ['style', 'css', 'sass']
}
]
},
plugins:[
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
})
],
resolve: {
extensions: ['', '.js', '.es6', '.jsx']
},
watch: false
}
变为1时,您可以看到rDiff
可能为负数,而r-rDiff
会导致错误。
您应该使用其中的get
和eDiff
来修改该周期whitout。
我认为类似的事情应该有效:
rDiff
答案 1 :(得分:1)
你问题出现在你的第二个for循环中,你在每次运行时递增ediff
,而e
不会递增,直到第二个for循环结束,这给你
0 - ediff = -x
负整数不是数组的有效索引。
如果两个数组的大小相同,请尝试此操作。
for (int i = 0; resist.size(); i++){// I increments by one each time
if (effect.get(i) == resist.get(i)){//gets the value at index 1 through I, and compares them
effective.remove(i);//removes them if they are equal
resist.remove(i);
}
}