public class Zhejiang { public static void main(String[] args) { int[] arr=new int[] {1,-2,3,10,-4,7,2,-5}; int i=getGreatestSum(arr); System.out.println(i); } private static int getGreatestSum(int[] arr) { if (arr==null||arr.length==0) { return 0; } int greatestSum=0; int temp=greatestSum; for (int i = 0; i < arr.length; i++) { temp+=arr[i]; if (temp<0) {//若是當前和已經爲負數了,直接拋棄這個值,應該數組元素中必定有正數,選擇任何一個整數都要大於負數 temp=0; } if(temp>greatestSum) {//發現新的最大和,將其從新賦給greatestSum greatestSum=temp; } } if (greatestSum==0) {//由於不少值被拋棄了,會發生這種極端狀況,因此最後將單個元素中的最大值賦給greatestSum greatestSum=arr[0]; for (int i = 1; i < arr.length; i++) { if (greatestSum<arr[i]) { greatestSum=arr[i]; } } } return greatestSum; } }