一维数组(单步调试)

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

 

 

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

 

 

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

 

 

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

代码中是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();



    }

}

 

转载于:https://www.cnblogs.com/janeszj/p/10770580.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值