一维数组(单步调试)

给你一囗甜甜゛ 提交于 2020-01-31 04:45:55

单步调试是在输出代码块中加入条件语句,首次运行输入的如果是非数字,则顺序执行

 

 

如果输入的是不超过当前执行次数的整数时实现回滚

 

 

如果输入的整数超过当前执行次数,出现提示,此时无论输入任何类型数据,都会顺序执行

 

 

回滚功能:将执行的次数和执行该次数时对应子数组的起始位置,以及到当前执行次数为止的子数组最大值和所有子数组的和实现一对多的对应关系

代码中是temp和j,i,sum,all对应

在一个duiying类中实现。

package SHUZU;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;               
import java.util.Scanner;        
class duiying{
    int x,y,sum;
    List<Integer> all;
    public List<Integer> getAll() {
        return all;
    }
    public void setAll(List<Integer> all) {
        this.all = all;
    }
    public duiying(int x1,int y1,int sum1,List<Integer> a)
    {
        x=x1;
        y=y1;
        sum=sum1;
        all=new ArrayList<Integer>(a);
    }
    public int getSum() {
        return sum;
    }
    public void setSum(int sum) {
        this.sum = sum;
    }
    public int getX() {
        return x;
    }
    public void setX(int x) {
        this.x = x;
    }
    public int getY() {
        return y;
    }
    public void setY(int y) {
        this.y = y;
    }
    
}
public class shuzu {
    
    public static void main(String[] args) {        
        //        WriterFun();
        List<Integer> shuzu=new ArrayList<Integer>();
        int a[]=new int[10];
        Scanner input=new Scanner(System.in);
        for(int i=0;i<=9;i++)
        {
            a[i]=input.nextInt();
            shuzu.add(a[i]);
        }

        List<duiying> dy=new ArrayList<duiying>();
        int temp=1;
        for(int j=-1;j<=(shuzu.size()-2);j++)
        {
            int sum=0,back;
            for(int i=j+1;(i<=shuzu.size()-1);i++)
            {

                if(input.hasNextInt())
                {
                    back=input.nextInt();
                    if(back>(temp-1))
                        {
                            System.out.println("输入有误!(超出回滚范围,继续顺序执行)");
                        }
                    else
                    {
                    temp=back;
                    j=dy.get(temp-1).getX();
                    i=dy.get(temp-1).getY();
                    all=dy.get(temp-1).getAll();
                    sum=dy.get(temp-1).getSum();
                    }
                }
                else
                {
                    input.next();
                }
                dy.add(new duiying(j,i,sum,all));
                sum=sum+shuzu.get(i);
                System.out.print("当前已检查到第"+temp+"个子数组"+"      ");
                System.out.print("由第"+(j+2)+"个到第"+(i+1)+"个元素组成"+"      ");
                temp++; 
            
                all.add(sum);
                Collections.sort(all); 
                System.out.print("当前最大子数组的和:");
                System.out.println(all.get(all.size()-1));
                

            }
        }
        input.close();



    }

}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!