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]);
        }

    }
}

 

posted @ 2019-04-25 22:00  暗梦  阅读(217)  评论(0编辑  收藏  举报