Java软件工程的弹幕调试原则
日期:2019.4.25
博客期:061
星期四
今天是把很久之前的那个相关程序——一维数组的最大和的子数组的求取信息,我们今天的任务就是把每一步的信息都要进行输出查看!
如下图:


package pvp; import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.Random;
import java.util.Scanner; public class TestPlay6 {
public static void run(){
File f = new File("data/data.txt");
if(!f.exists())
{
System.out.println("文件不存在!");
System.exit(0);
}
//存储导入内容
String str;
//内容
Scanner sc = null;
try {
sc = new Scanner(f);
} catch (FileNotFoundException e1) {
System.out.println("文件不存在!");
System.exit(0);
}
//最大值
BigInteger rmax = new BigInteger("0");
//正数总值
BigInteger Tnum = new BigInteger("0");
//负数总值
BigInteger Fnum = new BigInteger("0");
//记录是否发生转变
int sis = 0;
//标记是第几程度
int attitude = 0; BigInteger start = BigInteger.ZERO,end = BigInteger.ZERO;
BigInteger true_start = BigInteger.ZERO,true_end = BigInteger.ZERO;
//循环
try
{
BigInteger sis_s = rmax;
BigInteger seat = new BigInteger("0");
if(!sc.hasNext())
{
System.out.println("文件内容为空!");
System.exit(0);
}
while(sc.hasNext())
{
str = sc.next();
BigInteger p = new BigInteger(str);
seat = seat.add(BigInteger.ONE);
end = seat;
if(attitude==0) //---------------------------------------[寻找第一个正数]
{
if(p.compareTo(new BigInteger("0"))<=0)
;
else
{
start = seat;
Tnum = p;
attitude = 1;
}
}
else if(attitude==1) //---------------------------------------[上一个数为正数]
{
if(p.compareTo(new BigInteger("0"))<0)
{
if(sis==0)
{
sis = 1;
Fnum.add(p);
}
else
{
Fnum = p;
}
attitude = -1;
}
else
{
Tnum = Tnum.add(p);
} if(Tnum.compareTo(rmax)>0)
{
rmax = Tnum;
true_start = start;
true_end = end;
}
}
else //---------------------------------------[上一个数为负数]
{
if(p.compareTo(new BigInteger("0"))>0)
{
attitude = 1;
if(Tnum.compareTo(new BigInteger("0").subtract(Fnum))>0)
{
Tnum = Tnum.add(Fnum).add(p);
}
else
{
Tnum = p;
start = seat;
}
}
else
{
Fnum = Fnum.add(p);
}
}
if(p.compareTo(rmax)>0)
{
rmax = p;
true_start = start;
true_end = end;
}
if(p.compareTo(Tnum)>0)
{
rmax = Tnum;
true_start = start;
true_end = end;
}
if(rmax.equals(sis_s))
System.out.println("数据编号:"+seat.toString()+"\t,新数大小:"+p.toString()+"\t,正数总值:"+Tnum.toString()+"\t,负数总值:"+Fnum.toString()+"\t,数组从第"+true_start.toString()+"\t位开始到第"+true_end.toString()+"\t位结束,最大值:"+rmax.toString()+"\t");
else
{
System.err.println("数据编号:"+seat.toString()+"\t,新数大小:"+p.toString()+"\t,正数总值:"+Tnum.toString()+"\t,负数总值:"+Fnum.toString()+"\t,数组从第"+true_start.toString()+"\t位开始到第"+true_end.toString()+"\t位结束,最大值:"+rmax.toString()+"\t");
sis_s = rmax;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
} }
catch( NumberFormatException e){
System.out.println("输入内容不是数字!");
System.exit(0);
}
sc.close();
}
public static void run2(int ls){
File f = new File("data/data.txt");
if(!f.exists())
{
System.out.println("文件不存在!");
System.exit(0);
}
//存储导入内容
String str;
//内容
Scanner sc = null;
try {
sc = new Scanner(f);
} catch (FileNotFoundException e1) {
System.out.println("文件不存在!");
System.exit(0);
}
//最大值
BigInteger rmax = new BigInteger("0");
//正数总值
BigInteger Tnum = new BigInteger("0");
//负数总值
BigInteger Fnum = new BigInteger("0");
//记录是否发生转变
int sis = 0;
//标记是第几程度
int attitude = 0; BigInteger start = BigInteger.ZERO,end = BigInteger.ZERO;
BigInteger true_start = BigInteger.ZERO,true_end = BigInteger.ZERO;
//循环
try
{
BigInteger sis_s = rmax;
BigInteger seat = new BigInteger("0");
if(!sc.hasNext())
{
System.out.println("文件内容为空!");
System.exit(0);
}
BigInteger sss = new BigInteger(Integer.toString(ls));
while(sc.hasNext())
{
str = sc.next();
BigInteger p = new BigInteger(str);
seat = seat.add(BigInteger.ONE);
end = seat;
if(attitude==0) //---------------------------------------[寻找第一个正数]
{
if(p.compareTo(new BigInteger("0"))<=0)
;
else
{
start = seat;
Tnum = p;
attitude = 1;
}
}
else if(attitude==1) //---------------------------------------[上一个数为正数]
{
if(p.compareTo(new BigInteger("0"))<0)
{
if(sis==0)
{
sis = 1;
Fnum.add(p);
}
else
{
Fnum = p;
}
attitude = -1;
}
else
{
Tnum = Tnum.add(p);
} if(Tnum.compareTo(rmax)>0)
{
rmax = Tnum;
true_start = start;
true_end = end;
}
}
else //---------------------------------------[上一个数为负数]
{
if(p.compareTo(new BigInteger("0"))>0)
{
attitude = 1;
if(Tnum.compareTo(new BigInteger("0").subtract(Fnum))>0)
{
Tnum = Tnum.add(Fnum).add(p);
}
else
{
Tnum = p;
start = seat;
}
}
else
{
Fnum = Fnum.add(p);
}
}
if(p.compareTo(rmax)>0)
{
rmax = p;
true_start = start;
true_end = end;
}
if(p.compareTo(Tnum)>0)
{
rmax = Tnum;
true_start = start;
true_end = end;
}
if(sss.compareTo(seat)<=0)
{
if(rmax.equals(sis_s))
System.out.println("数据编号:"+seat.toString()+"\t,新数大小:"+p.toString()+"\t,正数总值:"+Tnum.toString()+"\t,负数总值:"+Fnum.toString()+"\t,数组从第"+true_start.toString()+"\t位开始到第"+true_end.toString()+"\t位结束,最大值:"+rmax.toString()+"\t");
else
{
System.err.println("数据编号:"+seat.toString()+"\t,新数大小:"+p.toString()+"\t,正数总值:"+Tnum.toString()+"\t,负数总值:"+Fnum.toString()+"\t,数组从第"+true_start.toString()+"\t位开始到第"+true_end.toString()+"\t位结束,最大值:"+rmax.toString()+"\t");
sis_s = rmax;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
} }
catch( NumberFormatException e){
System.out.println("输入内容不是数字!");
System.exit(0);
}
sc.close();
}
public static void FileMaker(BigInteger leng,BigInteger min,BigInteger max){
File f = new File("data/data.txt");
if(!f.exists())
{
try {
f.createNewFile();
} catch (IOException e) {
//Do Nothing...
}
}
PrintWriter pw = null;
try {
pw = new PrintWriter(f);
} catch (FileNotFoundException e) {
System.out.println("文件不存在!");
System.exit(0);
}
Random ra = new Random(System.currentTimeMillis());
BigInteger bi = new BigInteger("1"); BigInteger sumL = max.subtract(min).add(BigInteger.ONE); while(bi.compareTo(leng)<=0)
{
long x = ra.nextLong();
BigInteger bnum = new BigInteger(Long.toString(x));
bnum = bnum.mod(sumL).add(min);
pw.println(bnum.toString());
bi = bi.add(BigInteger.ONE);
}
pw.close();
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数据量:");
String str = sc.next();
System.out.println("请输入数据范围:");
String str1 = sc.next();
String str2 = sc.next();
System.out.println("确定是否查看关键步骤");
boolean isKey = false;
try{
isKey = sc.nextBoolean();
BigInteger leng = new BigInteger(str);
BigInteger num1 = new BigInteger(str1);
BigInteger num2 = new BigInteger(str2);
if(num1.compareTo(num2)==0)
throw new Exception();
else if(leng.compareTo(BigInteger.ZERO)<0)
throw new Exception();
else
{
if(num1.compareTo(num2)<0)
FileMaker(leng,num1,num2);
else
FileMaker(leng,num2,num1);
}
}catch(Exception e){
System.out.println("爷爷!出现问题了!");
System.exit(0);
} if(!isKey)
run();
else
{
run();
try{
int l = sc.nextInt();
run2(l);
}catch (Exception e){
//Do Nothing...
}
}
sc.close();
}
}
TestPlay6
Java软件工程的弹幕调试原则的更多相关文章
- ndk-gdb 对java/native code联合调试(升级版)
之前写过一篇 关于android native 开发,调试的文章(http://www.cnblogs.com/yaozhongxiao/archive/2012/03/13/2393959.html ...
- developerWorks 中国 技术主题 Java technology 文档库 Java 性能测试的四项原则
转-https://www.ibm.com/developerworks/cn/java/j-lo-java-performance-testing/?cm_mmc=dwchina-_-homepa ...
- Java设计模式的6大原则
Java设计模式的6大原则 1.开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭.在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果.简单来 ...
- 图解Java设计模式之设计模式七大原则
图解Java设计模式之设计模式七大原则 2.1 设计模式的目的 2.2 设计模式七大原则 2.3 单一职责原则 2.3.1 基本介绍 2.3.2 应用实例 2.4 接口隔离原则(Interface S ...
- RASP | 远程Java应用的RASP调试教程
远程Java应用的RASP调试教程 介绍 Java RASP是基于Java Agent技术实现的,而Java Agent代码无法独立启动,必须依赖于一个Java运行时程序才能运行. 如何调试一个Jav ...
- 有效处理java异常的三个原则
Java中异常提供了一种识别及响应错误情况的一致性机制,有效地异常处理能使程序更加健壮.易于调试.异常之所以是一种强大的调试手段,在于其回答了以下三个问题: 什么出了错? 在哪出的错? 为什么出错? ...
- Java GC 专家系列5:Java应用性能优化的原则
本文是GC专家系列中的第五篇.在第一篇理解Java垃圾回收中我们学习了几种不同的GC算法的处理过程,GC的工作方式,新生代与老年代的区别.所以,你应该已经了解了JDK 7中的5种GC类型,以及每种GC ...
- Java Eclipse进行断点调试
如何调试Java程序? 大家最开始学习Java,都会觉得IDE调试好高端有木有,其实很简单了. 下文会尽量简单直观的教会你在Eclipse中调试,其他的IDE调试步骤也是类似的. 1.在你觉得有错的地 ...
- JAVA设计模式之依赖倒转原则
3.1 依赖倒置原则的定义 依赖倒置原则(Dependence Inversion Principle,简称DIP)这个名字看着有点别扭,“依赖”还“倒置”,这到底是什么意思?依赖倒置原则的原始定义是 ...
随机推荐
- Git 之 恢复修改的文件
对于恢复修改的文件,就是将文件从仓库中拉到本地工作区,即 仓库区 ----> 暂存区 ----> 工作区. 对于修改的文件有两种情况: 只是修改了文件,没有任何 git 操作 修改了文件, ...
- codeforces476D
Dreamoon and Sets CodeForces - 476D Dreamoon likes to play with sets, integers and . is defined as ...
- odoo Model字段的参数
odoo Model字段的参数 class Field(object): """ The field descriptor contains the field defi ...
- Nginx+rtmp+ffmpeg 搭建推流服务器
1. 安装nginx服务器 1.1 clone $ brew tap denji/homebrew-nginx 1.2 安装 $ brew install nginx-full --with-rtmp ...
- U68364 _GC滑迷宫
题目背景 _GC买了一双蔡徐坤一代. 题目描述 _GC进入了一个n*m的迷宫.本题的特殊之处在于,_GC只能滑着走.具体来说就是,选定一个方向后,_GC会一直向该方向滑,直到撞到墙.会给出_GC的起始 ...
- FTP设置用户名和密码
第一步新建用户: 1.电脑右键管理--> 2.本地用户和组--> 3.新建用户,设置密码成功 第二步:开启FTP服务 1.控制面板-->程序-->启用或关闭Windows功能- ...
- 使用Portainer管理Docker
Portainer Portainer安装非常简单,只需不到一分钟.Portainer完全支持Docker 1.10及更高版本. Mac 快速安装运行: 命令行输入: docker pull port ...
- Docker proxy
Method One: mkdir /etc/systemd/system/docker.service.dvim /etc/systemd/system/docker.service.d/http- ...
- 深入理解JVM(6)——Java内存模型和线程
Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM)用来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果(“即Ja ...
- TCPDUMP 使用教程
TCPDUMP 命令使用简介 简单介绍 tcpdump 是一款强大的网络抓包工具,运行在 Linux 平台上.熟悉 tcpdump 的使用能够帮助你分析.调试网络数据. 要想很好地掌握 tcpdump ...