实验要求:
1.要求数组从文件读取。
2.如果输入的数组很大, 并且有很多大的数字, 就会产生比较大的结果 (考虑一下数的溢出), 请保证你的程序能正常输出。
3.另外, 如果输入文件的参数有错误, 这个程序应该能正常退出, 并显示相应的错误信息。 任何输入错误都不能导致你的程序崩溃。
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{ /*public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.println("输入10个数"); int num[]=new int[10]; int sum=0; int sum1=0; for(int i=0;i<10;i++) { num[i]=sc.nextInt(); if(num[i]>sum) { sum=num[i]; } } for(int i=0;i<10;i++) { sum1=num[i]; for(int j=i+1;j<10;j++) { sum1=sum1+num[j]; if(sum1>sum) { sum=sum1; } } } System.out.println("最大和为:"+sum); }*/ static String s=""; public static void main(String[] args) throws IOException { chansheng(); read(); String[] rang=s.split("[^(-9--10-9)]"); BigInteger value=new BigInteger("0"); BigInteger sum=new BigInteger(String.valueOf(rang[0])); for(int i=0;i<rang.length;i++) { int a=value.compareTo(BigInteger.valueOf(0)); if(a==0||a==-1) { value=new BigInteger(String.valueOf(rang[i])); }else { value.add(new BigInteger(String.valueOf(rang[i]))); } if(sum.compareTo(value)==-1) { sum=value; } } System.out.println("最大值为:"+sum); } 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()*100000000)-Math.random()*100000000); BigInteger a=new BigInteger(String.valueOf(ran)); bw.write(String.valueOf(a)+" "); } bw.close(); } }
反思:自己不会的东西还是太多,看到这道题的时候自己思路混乱,分解成小问题之后也是混乱至极,以至于所有问题都没有解决,无奈之下在网上搜了别人的代码借鉴了借鉴,自己需要学习的还有很多呀