zoukankan      html  css  js  c++  java
  • 个人作业2

    设计思路 : 本题为个人作业1的续  要求在数量级 与数值范围上做突破 同时要抛出错误 安全退出

      首先 在数量级上 我使用了double 类型  在数量上 for循环是可以的 但是比较慢  我试了100万100万级 的数没报错 但是显示的 比较慢 不知道是神魔原因

    package main;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintStream;
    import java.util.Scanner;
    public class Item {  
        @SuppressWarnings("resource")
        public static void main(String args[]) throws Exception {  
            
            System.out.println("输入数量 n和数量级m:");
            Scanner in=new Scanner(System.in);
            int n=in.nextInt();
            Scanner in1=new Scanner(System.in);
            int m=in1.nextInt();
            PrintStream ps = new PrintStream("C:\Users\long.19981105\Desktop/Ditie.txt");
            for(int i=0;i<n;i++) 
            {
                System.setOut(ps);//把创建的打印输出流赋给系统。即系统下次向 ps输出
                System.out.print(random(m)+" ");
             }//在txt文件中输出 n 个 数量级 为 m 的数。
            
            File file = new File("C:\Users\long.19981105\Desktop/Ditie.txt");
            double[] a = getLineFromTxt(file," ");
            for(int i = 0; i< a.length; i++){
            System.out.println("a["+i+"] = "+a[i]);
            }
            System.out.println(findMax(a));
            }
             
             /*
              * 读取txt到数组
              */
            public static double[] getLineFromTxt(File file, String split) throws Exception{
            BufferedReader br = new BufferedReader(new FileReader(file));
            String firstLine = br.readLine(); //就读第一行
            String[] arrs = firstLine.split(" ");
            //将字符数组转为double数组
            double[] arr = new double[arrs.length];
            for(int i = 0; i< arr.length; i++){
            arr[i] = Double.parseDouble(arrs[i]);
            }
            if(br!= null){
            br.close();
            br = null;
            }
            return arr;
            
            
            }
            
    
    /*
     * 最大子数组 和
     */
        public static double findMax(double array[]){
            //加上约束条件,防止当数组为空时造成数组越界
            if (array.length == 0) {
                return 0;
            }
    
           double max = array[0];
            double sum = 0;
    
            for(int i=0; i<array.length; i++){  
                //如果加上某个元素sum>=0的话,就加;
                //当数组全为负数的时候只要有加法就一定比原来的数小,此时就相当于找出数组内最大的数 
                if(sum >= 0) { 
                    sum += array[i];  
                }
                else{  
                    sum = array[i]; //否则从当前位置重新计算  
                }
                if(sum > max){  
                    max = sum;  
                }
            }  
            return max;  
        }
        /*
         * 生成m数量级的随机数
         */
        public static int random(int m) {
            
            
                int num=(int)((Math.random())*m);
                return num;
            
            
        }
        /*
         * 输出到文件中
         */
        public static void writeFile()
        {
            try {
                File writeName = new File("C:\\Users\\long.19981105\\Desktop/Ditie.txt"); // 相对路径,如果没有则要建立一个新的output.txt文件
                writeName.createNewFile(); // 创建新文件,有同名的文件的话直接覆盖
                try (FileWriter writer = new FileWriter(writeName);
                     BufferedWriter out = new BufferedWriter(writer)
                ) {
                    out.write(""); // 
    即为换行
                    out.write(""); // 
    即为换行
                    out.flush(); // 把缓存区内容压入文件
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        
      
      
    }

    100万数量级的 未能算出结果  抛出错误也未能实现

    个人反思 :

       数量级 不能仅用数字类型来限定  现实生活中 总会有超出 范围的一天 

    代码要有 现实意义 安全退出 是数据保存的重要依据

  • 相关阅读:
    html调用applet
    WindowListener中的windowClosed方法不执行的问题。
    有理数类 Java BigInteger实现
    有理数类 Java
    BigInteger构造函数解析
    求最大公约数(辗转相除法)
    Java 十六进制转十进制
    Java 十进制转十六进制
    ORA-12520: TNS:listener could not find available handler for requested type of server
    关于 error: Operation is not valid due to the current state of the object。
  • 原文地址:https://www.cnblogs.com/1983185414xpl/p/10543915.html
Copyright © 2011-2022 走看看