Java课堂测试——一维数组
题目:
一个典型的流程是:
2. 用户这时候有两个选择
2.1 按 单步执行 键, 在 GUI 看到你的程序是如何一步一步算出目前最大子数组的范围,当前计算到的临时子数组是在哪里,等等。 最好用不同的颜色标识不同的状态。
2.2 按 自动运行 键, 在 GUI 看到程序自动运行,并自动显示过程, 每次改变状态的时候要稍作停留 (例如 1 秒钟的时间)
3. 最好有一个 倒带 / 回滚 的键, 让用户可以看清楚关键的几步。
方法
将步骤存为数组遍历输出,再根据单,特定来进行操作
代码
package yiweishuzu; import java.util.Scanner; public class Shuzu { public static void main(String[] args) { int n=0; int LONG=20;//数量 int FANWEI=10;// n : -n ~ +n int step = 0; int number = 0; int a=1; Scanner input=new Scanner(System.in); String[] Content = new String[LONG]; int [] num=new int[LONG]; int []kuai=new int[LONG]; System.out.println("原数组:"); for(int k=0;k<LONG;k++) { num[k]=(int)(1+Math.random()*FANWEI*2)-FANWEI; System.out.println(num[k]); } System.out.println("—————————————————————————————————————————————————————————————————————————————"); //int [] num= {1,8,5,-6,9,-7,-9,4,5,-9,-3,4,-5,4}; int i=0,t=0; int sum=0,max=0,aMax=num[0]; //从第一个开始加直到最大,中途记录 for(i=0;i<num.length;i++)//起始 { Content[i] = "当前执行第 "+i+" 步, "; t=0; max=num[t];//赋初值 for(sum=num[t+i];t<num.length-i-1;t++)//加 { if(max<=sum)//比较,记录最大 { max=sum; } //System.out.println(sum); sum=sum+num[t+1+i]; int s=i+t; Content[i]+="已经检查 "+(n++)+" 个子数组,"; Content[i]+="从下标 "+i+" 到 "+s+" 的子数组总和是:"+sum+", "; } if(aMax<=max) { aMax=max; } //System.out.println(""); Content[i]+="到第 "+i+" 步为止的最大子数组和为:"+aMax+" "; } System.out.println("END:"+aMax); System.out.println("————————————————————————————————————————————————————————————————————————————"); System.out.println("请输入操作"); System.out.println("1.直接运行 2.单步运行 3.跳转到指定步骤 4.退出 "); do { try { number = input.nextInt(); } catch(Exception e) { System.out.println("请输入整型序号"); } switch(number) { case 1: for(int k=step;k<LONG;k++) { System.out.println(Content[k]); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } step = LONG-1; break; case 2: System.out.println(Content[step]); break; case 3: System.out.println("请输入步骤数"); step = input.nextInt(); System.out.println(Content[step]); break; case 4: return; default: System.out.println("请输入正确的序号"); break; } if(step < LONG-1) { System.out.println("1.直接运行(剩余步骤) 2.单步运行(剩余步骤) 3.跳转到指定步骤(剩余步骤) 4.退出 "); step++; } if(step == LONG-1) { String judge = null; System.out.println("————————————————————————————————————————————————————————————————————————————"); System.out.println("运行步骤已全部执行完,是否回到初始页面(Y/N)"); judge = input.next(); switch(judge) { case "Y": step = 0; System.out.println("1.直接运行 2.单步运行 3.跳转到指定步骤 4.退出 "); break; case "N": return; default: System.out.println("请输入正确的字母"); break; } } }while(a==1); for(int k=0;k<LONG;k++) { System.out.println(Content[k]); } } }