博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一位数组续
阅读量:6249 次
发布时间:2019-06-22

本文共 2648 字,大约阅读时间需要 8 分钟。

设计并实现一个系统,让一个普通用户就能通过单步执行的方式看到你的算法是如何工作的。

1.1用户也可以自行定义数组的大小

2.1按单步执行键,在GUI看到你的程序是如何一步一步算出目前最大子数组的范围,当前计算到的临时子数组是在哪里,等等。最好用不同的颜色标识不同的状态。

2.2按自动运行键,在GUI看到程序自动运行,并自动显示过程,每次改变状态的时候要稍作停留

3.最好有一个倒带/回滚的键,让用户可以看清楚关键的几步

设计思路:

设计一个字符串数组来储存当前最大子数组,设置两个变量来计算当前最大子数组的位置。之后创建一个函数来实现功能

代码:

import java.util.Scanner;/* * 求子数组的最大值 */public class shuzu {    static int n;    static String[] Result = new String[100];    public static void main(String[] args) {        // TODO 自动生成的方法存根        int num[] = new int[100];        Scanner in = new Scanner(System.in);                        int start,end = 0;        int a=0;                int sum = 0;        int value = 0;                System.out.println("输入数组的个数");        n = in.nextInt();        System.out.println("输入数组中的值");        for(int i = 0;i < n;i++)        {            num[i] = in.nextInt();        }        start = 0;        sum = num[0];                                for(int i = 0;i < n;i++)        {            if (value <= 0) {                value = num[i];                 start = i;                end ++;                a++;            }else {                value += num[i];                 end ++;                            }                                                if (sum < value) {                    sum = value;                Result[i] = "第" + (i+1) + "步:" +"此时的最大子数组为" + sum + "从"+ (start+1) + "到" + end  + "已经计算了"  + a + "个子数组" ;                            }else {                Result[i] = "第" + (i+1) + "步:" +"此时的最大子数组为" + sum + "从"+ (start+1) + "到" + end  +"已经计算了"  + a + "个子数组";            }                    }        done();        System.out.println("最大值为" + sum);            }        public static void done()    {        int stop,k;        Scanner in = new Scanner(System.in);        System.out.println("单步调试请按1");        stop = in.nextInt();        if (stop != 1) {            for(int i = 0 ; i < n ; i++)            {                System.out.println(Result[i]);            }        }        else {            for(int i = 0 ; i < n ; i++)            {                System.out.println("继续执行请按1");                stop = in.nextInt();                if (stop == 1) {                    System.out.println(Result[i]);                    continue;                }                            }        }        int choice = 0;                        while(choice != 1)        {            System.out.println("是否需要回滚,回滚请按0");            choice = in.nextInt();            if (choice == 0) {                System.out.println("请输入需要回滚到的步数");                k = in.nextInt();                for(int t=k-1;t

实验截图:

转载于:https://www.cnblogs.com/liujinxin123/p/10770355.html

你可能感兴趣的文章
[to do list][PCB][questions]and[plan]
查看>>
Cocos2d-x3.2 TextureCache类异步载入功能解说
查看>>
Tomcat配置多个域名绑定到不同项目
查看>>
[转]Creating an OData v3 Endpoint with Web API 2
查看>>
hdu 1071 The area
查看>>
char,short ,int ,long,long long,unsigned long long数据范围
查看>>
ffmpeg处理rtmp/文件/rtsp的推流和拉流
查看>>
jquery13 attr() prop() val() addClass()等 : 对元素属性的操作
查看>>
UVa 263 - Number Chains
查看>>
设计模式之模板方法模式
查看>>
在 Windows Server 2008 中部署带 SignalR 的网站出错
查看>>
A glance for agile method
查看>>
Java高级教程:Java并发性和多线程
查看>>
Android更新带进度条的通知栏
查看>>
Python XML解析
查看>>
五步搭建属于自己的个人网站
查看>>
换今日特价图片---轻开电子商务系统(企业入门级B2C站点)
查看>>
任务调度利器:Celery
查看>>
利用java mail发送邮件(转)
查看>>
Mybatis(六) Spring整合mybatis
查看>>