• 每日总结


    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]);
            }
    
        }
    }
    复制代码
  • 相关阅读:
    DBA 职责及日常工作职责
    mysql 语句笔记
    学习Groovy — 闭包
    linux 命令: 网络和进程
    linux命令: rm命令
    Pro Git-- 跟踪分支
    Redis Tutorial
    linux 命令--文件操作
    分库分表的几种常见形式
    乐观锁与悲观锁
  • 原文地址:https://www.cnblogs.com/ldy2396/p/14218817.html
Copyright © 2020-2023  润新知