zoukankan      html  css  js  c++  java
  • 一维数组代码实现可视化

    要求:

    1  按 单步执行 键, 在 GUI 看到你的程序是如何一步一步算出目前最大子数组的范围,当前计算到的临时子数组是在哪里,等等。 最好用不同的颜色标识不同的状态。
    2  按 自动运行 键, 在 GUI 看到程序自动运行,并自动显示过程, 每次改变状态的时候要稍作停留 (例如 1 秒钟的时间)
    3  最好有一个 倒带 / 回滚 的键, 让用户可以看清楚关键的几步。

    设计思想:

     本次实现可视化的过程中在如何输出目前最大子数组和是由哪几个数组元素组成出现了较大问题。

    源代码:

    import java.util.Scanner;
    
    public class sum02 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入数组的长度为:");
            int n=sc.nextInt();
            int[] c = new int[n];
            System.out.println("请输入"+n+"个整数");
            for(int i=0;i<n;i++)
            {
                c[i] = (int) sc.nextLong();
            }
            
            
            int f=0;//定义整形变量f,为子数组最大值
            int sum=0;//定义整形变量sum,为子数组求和
            int p=1;
            for(int i=0;i<n;i++)
            {
                System.out.println("当前为第"+p+"步");
                int s=sum;
                sum = sum+c[i];
                System.out.println("此时的数据相加过程为:数组中的第"+(i+1)+"个数字与已有的sum值相加");
                if(sum < 0)
                {
                    sum=0;
                    //System.out.println("判断sum值是否小于0,小于0,则sum变为初值0");
                }
                if(sum > f)
                {
                    f = sum;
                    System.out.println("此时子数组最大和为:"+f);
                }
                System.out.println("此时已经检验"+p+"个数组元素");
                p++;
            }
            
            
            if(sum == 0)
            {
                for(int i=0;i<n;i++)
                {
                    System.out.println("当前为第"+p+"步");
                    
                    if(i == 0)
                    {
                        f = c[i];
                    }
                    if(f < c[i])
                    {
                        f = c[i];
                    }
                }
            }
            
            System.out.println("该数组的子数组之和的最大值为:"+f);
    
        }
    
    }

    截图:

  • 相关阅读:
    Hadoop Avro支持多输入AvroMultipleInputs
    Java LinqCollection 仿Linq的list常用函数
    json转成java对象
    symbol lookup error: /lib64/libpango-1.0.so.0: undefined symbol: g_log_structured_standard 错误
    CentOS 6&7安装ffmpeg
    MySQL的ibdata1文件占用过大瘦身
    Centos下磁盘管理的常用命令记录(如查找大文件)
    EasyPOI 教程以及完整工具类的使用
    github最火的springboot开源学习资料
    微信机器人
  • 原文地址:https://www.cnblogs.com/Qi77/p/10771148.html
Copyright © 2011-2022 走看看