如何在 Java 中查找总和等于给定数字的连续子数组?
java 8object oriented programmingprogramming更新于 2025/9/20 12:28:17
查找总和等于给定数字 − 的连续子数组
- 遍历数组。
- 在每个元素处逐个添加接下来的 n 个元素,当总和等于所需值时打印子数组。
示例
import java.util.Arrays;
import java.util.Scanner;
public class sub_arrays {
public static void main(String args[]){
//从用户处读取数组
Scanner sc = new Scanner(System.in);
System.out.println("输入要创建的数组的大小:");
int size = sc.nextInt();
int[] myArray = new int[size];
System.out.println("输入数组的元素:");
for(int i=0; i<size; i++){
myArray[i] = sc.nextInt();
}
//读取数字
System.out.println("输入所需总数:");
int reqSum = sc.nextInt();
System.out.println("创建的数组为:"+Arrays.toString(myArray));
System.out.println("子数组总数为:"+reqSum);
for(int i=0; i<myArray.length; i++){
int sum = 0;
for (int j=i; j<myArray.length; j++){
sum = sum + myArray[j];
if(sum == reqSum){
System.out.println(Arrays.toString(Arrays.copyOfRange(myArray, i, j+1)));
}
}
}
}
}
输出
输入要创建的数组的大小: 10 输入数组的元素: 5 4 1 2 3 4 1 4 5 5 输入所需的和: 10 创建的数组为:[5, 4, 1, 2, 3, 4, 1, 4, 5, 5] 子数组的和为:10 [5, 4, 1] [4, 1, 2, 3] [1, 2, 3, 4] [2, 3, 4, 1] [1, 4, 5] [5, 5]

