题目:

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

方法

将步骤存为数组遍历输出,再根据单,特定来进行操作

代码

package yiweishuzu;

import java.util.Scanner;

public class Shuzu {
public static void main(String[] args)
{
int n=;
int LONG=;//数量
int FANWEI=;// n : -n ~ +n
int step = ;
int number = ;
int a=;
Scanner input=new Scanner(System.in);
String[] Content = new String[LONG];
int [] num=new int[LONG];
int []kuai=new int[LONG];
System.out.println("原数组:");
for(int k=;k<LONG;k++)
{
num[k]=(int)(+Math.random()*FANWEI*)-FANWEI;
System.out.println(num[k]);
}
System.out.println("—————————————————————————————————————————————————————————————————————————————");
//int [] num= {1,8,5,-6,9,-7,-9,4,5,-9,-3,4,-5,4};
int i=,t=;
int sum=,max=,aMax=num[];
//从第一个开始加直到最大,中途记录
for(i=;i<num.length;i++)//起始
{
Content[i] = "当前执行第 "+i+" 步,\n";
t=;
max=num[t];//赋初值
for(sum=num[t+i];t<num.length-i-;t++)//加
{
if(max<=sum)//比较,记录最大
{
max=sum; }
//System.out.println(sum);
sum=sum+num[t++i];
int s=i+t;
Content[i]+="已经检查 "+(n++)+" 个子数组,";
Content[i]+="从下标 "+i+" 到 "+s+" 的子数组总和是:"+sum+",\n"; }
if(aMax<=max)
{
aMax=max;
} //System.out.println("");
Content[i]+="到第 "+i+" 步为止的最大子数组和为:"+aMax+"\n"; } System.out.println("END:"+aMax);
System.out.println("————————————————————————————————————————————————————————————————————————————");
System.out.println("请输入操作");
System.out.println("1.直接运行\n2.单步运行\n3.跳转到指定步骤\n4.退出\n"); do
{
try
{
number = input.nextInt();
}
catch(Exception e)
{
System.out.println("请输入整型序号");
} switch(number)
{
case :
for(int k=step;k<LONG;k++)
{
System.out.println(Content[k]);
try {
Thread.sleep();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
step = LONG-;
break; case :
System.out.println(Content[step]);
break; case :
System.out.println("请输入步骤数");
step = input.nextInt();
System.out.println(Content[step]);
break;
case :
return;
default:
System.out.println("请输入正确的序号");
break; }
if(step < LONG-)
{
System.out.println("1.直接运行(剩余步骤)\n2.单步运行(剩余步骤)\n3.跳转到指定步骤(剩余步骤)\n4.退出\n");
step++;
}
if(step == LONG-)
{
String judge = null;
System.out.println("————————————————————————————————————————————————————————————————————————————");
System.out.println("运行步骤已全部执行完,是否回到初始页面(Y/N)");
judge = input.next();
switch(judge)
{
case "Y":
step = ;
System.out.println("1.直接运行\n2.单步运行\n3.跳转到指定步骤\n4.退出\n");
break;
case "N":
return;
default:
System.out.println("请输入正确的字母");
break;
}
}
}while(a==); for(int k=;k<LONG;k++)
{
System.out.println(Content[k]);
} }
}

Java课堂测试——一维数组的更多相关文章

  1. java课堂测试2(两种方式)

    实验源代码 这是不使用数组形式的源代码 /* 2017/10/10 王翌淞 课堂测试2 */import java.util.Scanner; public class Number { public ...

  2. java基础5 (一维)数组和二维数组

    本文知识点(目录): 一维数组(一维数组的概念.优点.格式.定义.初始化.遍历.常见异常.内存分析以及常见操作(找最大值.选择排序.冒泡排序等等))    二维数组(二维数组的遍历.排序.查找.定义. ...

  3. Java课堂测试--实现ATM的基本操作体会

    9月20的周四的Java课堂第一节课上就是有关于实现ATM的考试内容,在实现的过程中我了解到自己本身还是有很多的不足之处,例如在实现工程方面的相似性上面还有些许就的欠缺,再者就是回宿舍拿电源的原因导致 ...

  4. JAVA课堂测试之一位数组可视化

    代码: package test;//求最大子数组 import java.util.Scanner; import javax.swing.JOptionPane; public class shu ...

  5. Java课堂测试01及感想

    上周进行了Java的开学第一次测验,按要求做一个模拟ATM机功能的程序,实现存取款.转账汇款.修改密码.查询余额的操作.这次测验和假期的试题最大的不同还是把数组存储改成的文件存储,在听到老师说要用文件 ...

  6. java课堂测试

       package 作业2; //信1805-1 杨一帆 20183608 public class ScoreInformation1 { private String stunumber; pr ...

  7. java课堂测试—根据模板完成一个简单的技术需求征集系统

    课堂上老师发布了一个页面模板要求让我们实现一个系统的功能,模仿以后后端的简单工作情况. 然后在这个模板的基础上,提供了一个注册的网页模板,接着点击注册的按钮,发现register里面调用了zhu/zh ...

  8. java课堂测试样卷-----简易学籍管理系统

    程序设计思路:分别建立两个类:ScoreInformation类(用来定义学生的基本信息以及设置set和get函数)ScoreManagement类(用来定义实现学生考试成绩录入,考试成绩修改,绩点计 ...

  9. 第十一周java课堂测试

    Main.java package class_third_copy; import java.util.Scanner; import classthird.Test; import classth ...

随机推荐

  1. ios 在工程中使用字体

    1.将字体拖入项目 2.在info.plist 文件中加入 3.使用 self.label.font = [UIFont fontWithName: @"FZ XingHei" s ...

  2. ReactiveCocoa - study

    //KVO值监控,当alertTip改变时调用, filter对alertTip值进行过滤,此处当alertTip存在而长度不为0时,执行suscribeNext方法,弹出提示 [[RACObserv ...

  3. python基础篇_004_装饰器函数

    python装饰器函数 1.装饰器函数引导 功能:计算函数执行时长 import time """ 方式一: 函数首位添加时间,差值就是函数执行时间 缺点:每个函数都要加 ...

  4. Material Design 常用控件

    Material Design Material Design (原质化/材料化设计) 是在2014年Google I/O大会上推出的一套全新的界面设计语言. 意在解决Android平台界面风格不统一 ...

  5. 重温TCP

    先放张TCP头图片 一.TCP三次握手目的: 1.保证源主机确定目的主机在线,并可进行通信 2.让源主机检查它是否正在监听试图去连接的端口 3.允许源主机向接收者发送他的起始序列号,使得两主机可以将数 ...

  6. mysql的event(事件)用法详解

    SELECT * FROM mysql.event;SET GLOBAL event_scheduler = 1; -- 开启定时器 0:off 1:on SHOW VARIABLES LIKE 'e ...

  7. XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship

    A. Apple 按题意模拟即可. #include<stdio.h> #include<iostream> #include<string.h> #include ...

  8. day9面向对象,多线程2

    一.获取全部qq成员头像 import os,requests,pymongo class Qqgroup(object):#定义一个类 #定义获取QQ群的请求rul,抓包获取 group_rul = ...

  9. JS_ Date对象应用实例

    一.获取日期时间,秒数实时跳动 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  10. javascript自制函数图像生成器

    出于某种目的想做这个东西,顺便可以提供给GMA的用户&&放在博客园. 实现上只是简单的描点,加上一个相邻两点连线的开关,完全没有技术含量.而且函数图像一旦多起来就会变卡. 瓶颈在隐函数 ...