实验要求:
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 +"\n";
- }
- 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();
- }
- }
反思: 自己不会的东西还是太多, 看到这道题的时候自己思路混乱, 分解成小问题之后也是混乱至极, 以至于所有问题都没有解决, 无奈之下在网上搜了别人的代码借鉴了借鉴, 自己需要学习的还有很多呀
来源: http://www.bubuko.com/infodetail-2990226.html