這個問題在這里已經有了答案: 是什么導致 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它? (26 個回答) 昨天關門。
給定一個整數陣列 nums 和一個整數目標,回傳兩個數字的索引,使它們加起來等于目標。
您可能會假設每個輸入都只有一個解決方案,并且您可能不會兩次使用相同的元素。
您可以按任何順序回傳答案。
示例 1:
輸入:nums = [2,7,11,15],目標 = 9
輸出:[0,1]
解釋:因為 nums[0] nums[1] == 9,所以我們回傳 [0, 1]。
示例 2:
輸入:nums = [3,2,4],目標 = 6
輸出:[1,2]
示例 3:
輸入:nums = [3,3],目標 = 6
輸出:[0,1]
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] sum = new int[2];
for(int i=0;i<nums.length;i ){
if((nums[i] nums[i 1]) == target){
sum[0] = i;
sum[1]= i 1;
break;
}
}
return sum;
}
}
警告:命令列選項已啟用安全管理器警告:安全管理器已棄用,將在未來版本中洗掉
java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at line 6, Solution.twoSum
at line 54, DriverSolution.helper
at line 87, Driver.main
uj5u.com熱心網友回復:
您將 i 從 0 回圈到 nums.length,然后嘗試獲取 nums[i 1],因此很明顯您要求的是 ArrayIndexOutOfBoundsException。
由于您正在查找 i 1,因此您應該回圈到 nums.length-1
編輯:陣列索引從零開始。它們可以安全地從 0 索引到 length-1。
uj5u.com熱心網友回復:
ArrayIndexOutOfBoundsException 告訴您嘗試訪問超出陣列范圍的索引。
解決方案是使用兩個回圈,否則您只會將陣列中彼此相鄰的數字相加。
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] sum = new int[2];
for(int i=0;i<nums.length-1;i ){
for (j=i 1;j<nums.length;j ){
if((nums[i] nums[j]) == target){
sum[0] = i;
sum[1]= j;
}
}
return sum;
}
}
uj5u.com熱心網友回復:
您的問題在于這部分代碼:
if((nums[i] nums[i 1]) == target){
sum[0] = i;
sum[1]= i 1;
break;
}
如果您的 for 回圈一直持續到 i = nums.length i 1 將引發越界例外。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/449322.html
標籤:java arrays exception runtime-error
上一篇:Hive:如何移動資料庫并重新創建表以最大限度地減少停機時間?
下一篇:了解嘗試/最終抑制的例外
