[英]Why does this code throws a RuntimeError?
給定一個隨機整數數組和一個數字 x。 查找並打印數組中總和為 x 的元素的三元組。 打印三元組時,首先打印最小的元素。 也就是說,如果有效的三元組是 (6, 5, 10),則打印“5 6 10”。 沒有限制必須在第一行打印 5 個三元組。 您可以按任何順序打印三元組,只需注意三元組中元素的順序即可。
import java.util.Arrays;
public class TripletSum {
public static void FindTriplet(int[] arr, int x){
/* Your class should be named TripletSum.
* Don't write main().
* Don't read input, it is passed as function argument.
* Print output and don't return it.
* Taking input is handled automatically.
*/
Arrays.sort(arr);
int b=0, c=0;
for(int a=0; a<arr.length; a++){
b=a+1; c=b+1;
if((arr[a]+arr[b]+arr[c])==x){
System.out.print(a+"");
System.out.print(b+"");
System.out.print(c+"");
}
}
}
}
你必須迭代直到 arr.length-2。 當a= arr.length-1
然后c=arr.length+2
這是異常的原因
for(int a=0; a<arr.length-2; a++){
b=a+1; c=b+1;
if((arr[a]+arr[b]+arr[c])==x){
System.out.print(a+"");
System.out.print(b+"");
System.out.print(c+"");
}
}
您正在遍歷數組的整個長度。 當您進行倒數第二次迭代時,這將中斷。 當循環 indeax a
是arr.length - 2
,循環內的代碼將嘗試將c
定義為b+1
,它等於a+2
。 現在a
是arr.length-2
所以c
將等於arr.Length
這是一個比數組本身更大的索引(數組的最高索引是它的長度減一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.