• 数组4.25


    按 自动运行 键, 在 GUI 看到程序自动运行,并自动显示过程, 每次改变状态的时候要稍作停留 (例如 1 秒钟的时间)

    最好有一个 倒带 / 回滚 的键, 让用户可以看清楚关键的几步。

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class Shuzu extends Thread{
        public Shuzu(String name) {        // 参数为线程名称
            setName(name);
            
        }
        public void run() {        // 覆盖run()方法                 
                try {
                    chansheng();
                    read();
                    String[] rang=s.split("[^(-9--10-9)]");
                    int sum[]=new int[rang.length];
                    int sum1=0;
                    int sum2=0;
                    int sum3=0;
                    int a=0;
                    int b=0;
                    for(int i=0;i<rang.length;i++) {
                        sum[i]=Integer.parseInt(rang[i]);
                    }
                    
                    sum1=sum[0];
                    for(int i=0;i<rang.length;i++)
                    {
                        sum2=sum[i];
                        for(int j=i+1;j<rang.length;j++) {
                            sum2=sum2+sum[j];
                            if(sum2>sum1) {
                                sum1=sum2;
                                a=i;
                                b=j;
                            }
                            sum3=sum3+1;
                            System.out.println("第"+sum3+"步"+"  "+"目前的最大子数组和为:"+sum1+"  "+"数组元素为:第"+a+"个到第"+b+"个");
                            Thread.sleep(1000); 
                        }
                        
                    }
                    System.out.println("最大和为:"+sum1);
                    System.out.println("请输入要查询哪一步:");
                    Scanner sc1=new Scanner(System.in);
                    int c=sc1.nextInt();
                    int d=0;
                    if(c>sum3) {
                        System.out.println("请正确输入!");
                    }else {
                        while(d<=c){
                        for(int i=0;i<rang.length;i++)
                        {
                            sum2=sum[i];
                            for(int j=i+1;j<rang.length;j++) {
                                sum2=sum2+sum[j];
                                if(sum2>sum1) {
                                    sum1=sum2;
                                    a=i;
                                    b=j;
                                }
                                d=d+1;                                                      
                            }
                            
                        }
                        }
                        System.out.println("第"+c+"步"+"  "+"目前的最大子数组和为:"+sum1+"  "+"数组元素为:第"+a+"个到第"+b+"个");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            
        }
        static String s="";
    
        public static void main(String[] args) throws IOException {
            Thread thread1 = new Thread(new Shuzu("线程1")); // 创建线程1
            thread1.start();
    
    
        }
        
        
        public static String read() throws IOException {
            FileInputStream fis =new FileInputStream("leitianyushishabi.txt");
            BufferedReader br =new BufferedReader(new InputStreamReader(fis));
            String temp=" ";
            while((temp = br.readLine())!=null) {
                s= s+temp +"
    ";
            }
                fis.close();
                br.close();
                
                return s;
            
        }
        
        
        public static void chansheng() throws IOException {
            int n;
            System.out.println("请输入要产生的数量:");
            Scanner sc=new Scanner(System.in);
            n=sc.nextInt();
            File file1=new File("leitianyushishabi.txt");
            FileWriter out=new FileWriter(file1);
            BufferedWriter bw =new BufferedWriter(out);
            for(int i=0;i<n;i++) {
                int ran =(int) ((int) (Math.random()*100)-Math.random()*100);
                //BigInteger a=new BigInteger(String.valueOf(ran));
                bw.write(String.valueOf(ran)+" ");
            }
            bw.close();
        }
    }

  • 相关阅读:
    【学习笔记】Python 3.6模拟输入并爬取百度前10页密切相关链接
    socket编程
    2.4.2电子书fb.c文件
    3.1 电子书框架
    文件浏览器及数码相框 -2.3.2-freetype_arm-2
    文件浏览器及数码相框 -2.3.2-freetype_arm-1
    文件浏览器及数码相框 -2.3.1freetype_pc
    文件浏览器及数码相框 -2.2-字符点阵及汉字库
    文件浏览器及数码相框 -2.1-字符编码
    文件浏览器及数码相框-1
  • 原文地址:https://www.cnblogs.com/quyangzhangsiyuan/p/10770725.html
Copyright © 2020-2023  润新知