程序进程逐步显示,并可以控制停止和继续
用户用你的程序读入一个数组文件 (就像我们以前做过的那样),显示初始状态 (就像围棋打谱程序那样)
1.1. 用户也可以自行定义数组的大小,或者要求随机生成一个数字矩阵。
2. 用户这时候有两个选择
2.1 按 单步执行 键, 在 GUI 看到你的程序是如何一步一步算出目前最大子数组的范围,当前计算到的临时子数组是在哪里,等等。 最好用不同的颜色标识不同的状态。
2.2 按 自动运行 键, 在 GUI 看到程序自动运行,并自动显示过程, 每次改变状态的时候要稍作停留 (例如 1 秒钟的时间)
3. 这时最好有一个 倒带 / 回滚 的键, 让用户可以看清楚关键的几步。
(当然,用户可以选择是普通模式还是扩展定义的连通模式)
以上是老师所描述的用户需求
我认为,这个东西很简单
首先调出原来的程序代码,由于重装电脑,需要重新在控制台设置,import。
然后根据我的想法我仅仅插入了一些输出代码,以及定义了一个定义。
package 数组; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Random; import java.util.Scanner; import javax.sound.sampled.Line; import javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction; public class main { public static void main(String[] args) { int[] A=new int[10]; Scanner in=new Scanner(System.in); // for(int i=0;i<10;i++) // { // A[i]=in.nextInt(); // } int[] B={4,-2,3,4,-5,-6,1,-8,-9,2}; main a=new main(); System.out.println(a.max(B, 10)); } /* * @param A * @param n * @return */ public int max(int[] A,int n) { int k=1; int end=A[0]; int sum=A[0]; int m=0; int nn=0; for(int i=0;i<n;i++) { //sum=A[i]; for(int j=i+1;j<n;j++) { System.out.print("已检查"+k+++"个子数组, 最大子数组和为:"+end+"; "); //System.out.println(sum); sum+=A[j]; if(sum>end) { end=sum; m=i; nn=j; } System.out.print("子数组为["); for(int p=m;p<nn+1;p++) System.out.print(A[p]+","); System.out.print("]"); System.out.print("\n"); //System.in.read(); } } return end; }