单步执行的方式显示算法的工作流程
import java.util.Scanner; import java.io.*; import java.math.BigDecimal; public class array1 { public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner sc=new Scanner(System.in); System.out.println("请输入数组的长度"); int n=sc.nextInt(); int array[]=new int[n]; int array2[]=new int[n]; System.out.println("请依次输入数组的每个值"); for(int i=0;i<n;i++) { array[i]=sc.nextInt(); } for(int i=0;i<n;i++) { array2[i]=0; } int max; int[] array3=new int[2*n-1]; for(int j=0;j<n;j++) { array3[j]=array[j]; } for(int i=n;i<2*n-1;i++) array3[i]=array[i-n]; for(int i=0;i<2*n-1;i++) { System.out.print(array3[i]+" "); } /*当前最大子数组,从哪个到哪个,你检查了几个子数组了,还差几个。*/ System.out.print("\n"); int num=0;//数组个数。 System.out.println("输入0开始"); int number=sc.nextInt(); if(number==0) { for(int i=0;i<n;i++) { max=array3[i]; int sum=0; //System.out.print("abc"+max+" "); int temp=i; //for(int j=i;j<2*n-1;j++) { for(int j=i;j<=n-1+i;j++) { num++; sum=sum+array3[j]; if((max<sum)&&(j-i+1<=n)) { temp=j; //System.out.println("123"+temp); max=sum; } System.out.println("输入0执行下一步"); int number1=sc.nextInt(); if(number1==0) { System.out.println("当前执行第"+num+"步,当前正在计算第"+num+"个子数组,"+"从数"+array3[i]+"开始,"+"从数"+array3[j]+"结束,"+"当前最大子数组和为"+max+",最大子数组范围"+array3[i]+"到"+array3[temp]); } else { System.out.println("输入有误,程序退出"); System.exit(0); } } array2[i]=max; //System.out.println("def"+max); } } else { System.out.println("输入有误,程序退出"); System.exit(0); } int k=array2[0]; for(int i=0;i<n;i++) { System.out.println("ghi"+array2[i]); } for(int i=0;i<n;i++) { if(array2[i]>k) { k=array2[i]; } } System.out.println("最大值"+k); } }