我在写程序时,发现我的方法中的for循环多执行了一次,我有些不太明白为什么会这样,希望可以指点一下
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
public class A2_Box {
//delete the first element
public static int[] removeFirstElement(int[] arr) {
return Arrays.copyOfRange(arr, 1, arr.length);
}
//how to get final result
//let we start from index 0
public static int getResult(int m,int[] arr){
ArrayList<Integer> arrayList =new ArrayList<Integer>();
int len=0;//the number of positive result
int sum=0;//the sum of arr
for(int i=0;i<m;i++){
//get the sum and the length when it's positive
for(int j=0;j<arr.length;j++){
sum=sum+arr[j];
if(sum>0){
len=j-i+1+m-arr.length;
arrayList.add(len);
}
}
//can be delete
for(int s=0;s<arr.length;s++){
System.out.print(arr[s]+" ");
}
System.out.println();
sum=0;
arr=removeFirstElement(arr);
}
int[] result =new int[arrayList.size()];
for(int k =0;k<arrayList.size();k++){
result[k]=arrayList.get(k);
System.out.print(result[k]+" ");
}
System.out.println();
Arrays.sort(result);
return result[arrayList.size()-1];
}
public static void main (String[] args) throws IOException{
BufferedReader reader =new BufferedReader(new InputStreamReader(System.in));
//read m
String a =reader.readLine();
int m =Integer.parseInt(a);
//read array
String b =reader.readLine();
String[] c =b.split(" ");
int[] arr =new int[m];
for(int i=0;i<m;i++){
arr[i]=Integer.parseInt(c[i]);
}
//use the method
int result =getResult(m, arr);
System.out.println(result);
}
}