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+" 步,\n";
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+",\n";
}
if(aMax<=max)
{
aMax=max;
}
//System.out.println("");
Content[i]+="到第 "+i+" 步为止的最大子数组和为:"+aMax+"\n";
}
System.out.println("END:"+aMax);
System.out.println("————————————————————————————————————————————————————————————————————————————");
System.out.println("请输入操作");
System.out.println("1.直接运行\n2.单步运行\n3.跳转到指定步骤\n4.退出\n");
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.直接运行(剩余步骤)\n2.单步运行(剩余步骤)\n3.跳转到指定步骤(剩余步骤)\n4.退出\n");
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.直接运行\n2.单步运行\n3.跳转到指定步骤\n4.退出\n");
break;
case "N":
return;
default:
System.out.println("请输入正确的字母");
break;
}
}
}while(a==1);
for(int k=0;k<LONG;k++)
{
System.out.println(Content[k]);
}
}
}

浙公网安备 33010602011771号