有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么这段代码会抛出运行时错误?

给定一个随机整数数组和一个数字x。查找并打印数组中与x之和的元素的三元组。 打印三元组时,先打印最小的元素。 也就是说,如果有效的三元组是(6,5,10),则打印“5 6 10”。在第1行必须打印的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+"");
       }


       }


     }
}

共 (2) 个答案

  1. # 1 楼答案

    你只需要把它珍藏到第二段。当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+"");
        }
     }
    
  2. # 2 楼答案

    您正在迭代数组的整个长度。 当你在第二次到最后一次迭代时,这将中断。 当循环indeax aarr.length - 2时,循环中的代码将尝试将c定义为b+1,它等于a+2。现在aarr.length-2,所以c将等于arr.Length,这是一个比数组本身更大的索引(数组的最高索引是它的长度减1)