• 个人作业4-用户通过单步执行的方式看到你的算法是如何工作的(之前数组)


    在原来数组问题的基础上:

    用户这时候有两个选择
    2.1  按 单步执行 键, 在 GUI 看到你的程序是如何一步一步算出目前最大子数组的范围,当前计算到的临时子数组是在哪里,等等。 最好用不同的颜色标识不同的状态。
    2.2  按 自动运行 键, 在 GUI 看到程序自动运行,并自动显示过程, 每次改变状态的时候要稍作停留 (例如 1 秒钟的时间)

    代码简单实现如下:

    package array;
    
    import java.util.Scanner;
    
    import java.io.*;
    import java.math.BigDecimal;
    
    public class array1 {
    
    	
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入数组的长度");
    		int n=sc.nextInt();
    		int array[]=new int[n];
    		int array2[]=new int[n];
    		System.out.println("请依次输入数组的每个值");
    		for(int i=0;i<n;i++) {
    			 array[i]=sc.nextInt();
    		}
    		for(int i=0;i<n;i++) {
    			array2[i]=0;
    		}
    		int max;
    		int[] array3=new int[2*n-1];
    		
    		for(int j=0;j<n;j++) {
    			array3[j]=array[j];
    					}
    		for(int i=n;i<2*n-1;i++)
    		array3[i]=array[i-n];
    		for(int i=0;i<2*n-1;i++) {
    			System.out.print(array3[i]+" ");
    		}
    		/*当前最大子数组,从哪个到哪个,你检查了几个子数组了,还差几个。*/		
    		System.out.print("
    ");
    		int num=0;//数组个数。		
    		System.out.println("输入0开始");
    		int number=sc.nextInt();
    		if(number==0) {
    		for(int i=0;i<n;i++) {
    			max=array3[i];
    			int sum=0;
    			//System.out.print("abc"+max+" ");
    			int  temp=i;
    			//for(int j=i;j<2*n-1;j++) {
    			for(int j=i;j<=n-1+i;j++) {
    				num++;				
    				sum=sum+array3[j];				
    			if((max<sum)&&(j-i+1<=n)) {
    				temp=j;
    				//System.out.println("123"+temp);				
    				max=sum;
    			}	
    			System.out.println("输入0执行下一步");
    			int number1=sc.nextInt();
    			if(number1==0) {
    			System.out.println("当前执行第"+num+"步,当前正在计算第"+num+"个子数组,"+"从数"+array3[i]+"开始,"+"从数"+array3[j]+"结束,"+"当前最大子数组和为"+max+",最大子数组范围"+array3[i]+"到"+array3[temp]);
    			}
    			else {
    				System.out.println("输入有误,程序退出");
    				System.exit(0);
    			}
    			}
    							array2[i]=max;	
    				//System.out.println("def"+max);
    		} 
    		}
    		else {
    			System.out.println("输入有误,程序退出");
    			System.exit(0);
    		}
    		int k=array2[0];
    		for(int i=0;i<n;i++) {
    			System.out.println("ghi"+array2[i]);
    		}
    		for(int i=0;i<n;i++) {
    			if(array2[i]>k) {
    				k=array2[i];
    			}
    		}
    				
    		/*1 2 3 4 5 1 2 3 4
    		 * n+n-1
    		 *6 -7 9 -3 5 
    		 * 1 1+n
    		 * 2 2+n
    		 * 1 2 3 4 1 2 3
    		 * 2 3 4 1
    		 * 3 4 2 1
    		 * */
    		System.out.println("最大值"+k);
    	}
    	}
    

     截图:

    总结:自己只是简单地实现了一个用户通过不断按0键清楚地看到程序执行每一步的过程。

    但是并不能同时实现按 单步执行 键(最好用不同的颜色标识不同的状态。没有实现这点儿)和按 自动运行 键(自动显示过程, 每次改变状态的时候要稍作停留 (例如 1 秒钟的时间)

    然后自己后面学会的话,后续会再改进和补充

  • 相关阅读:
    ios学习-2015-7-9
    ios学习-2015-7-8
    ios学习-2015-7-7
    ios学习-2015-7-6
    ios学习-2015-7-5
    ios学习-2015-7-3
    ios学习-2015-7-2
    Selenium学习笔记之003:Web UI自动化知识点整理 分类: Selenium 2015-07-14 14:19 3人阅读 评论(0) 收藏
    Selenium学习笔记之002:IDE录制和回放 分类: Selenium 2015-07-12 17:13 19人阅读 评论(0) 收藏
    Selenium学习笔记之002:IDE录制和回放
  • 原文地址:https://www.cnblogs.com/zzstdruan1707-4/p/10771194.html
Copyright © 2020-2023  润新知