java - 为什么这段代码会引发 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+"");
}
}
}
}
解决方案
您正在遍历数组的整个长度。当您进行倒数第二次迭代时,这将中断。当循环 indeaxa
为时arr.length - 2
,循环内的代码将尝试定义c
为b+1
等于a+2
。现在a
如此将等于哪个arr.length-2
是比数组本身更大的索引(数组的最高索引是它的长度减一。c
arr.Length
推荐阅读
- function - Google 表格 - 将多个 IF 函数合并到一个单元格中
- sas - 在 SAS 中创建组合
- python - ValueError:形状不匹配:标签的形状(收到的 (1,))应该等于 logits 的形状,除了最后一个维度(收到的 (10, 30))
- reactjs - React pdf 查看器 - 使用来自本地服务器的工作人员
- python - SettingWithCopyWarning,如何阻止它?
- java - 在给定总和的子数组中,我被困在如何在 Java 中返回 ArrayList
- python - 如何使用 asyncio.Protocol 处理断开/重新连接?
- javascript - React - 找到在多个父组件中使用公共组件的正确方法
- python - 在 GEKKO 中使用整数 = True 的变量时出现奇怪的优化器行为
- r - 如何在 R 的 for 循环中包含 left_join?