其他分享
首页 > 其他分享> > 第二阶段

第二阶段

作者:互联网

package shujuguanli;

import java.util.*;

import java.io.*;
import java.math.BigInteger;

public class ceshi {
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
String line = "";
String snum[] = new String[100];
String sp[] = new String[10];// 设置num.txt中一行10个数据
File file = new File("num.txt"); // num.txt 就在此java工程下
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e) {
System.out.println("文件num.txt没有在此java工程下,请设置好文件位置后再次尝试");
return;
}
int temp = 0;
int k = 0;
int i = 0;
BigInteger big[] = new BigInteger[100];
BigInteger big2[] = new BigInteger[100];
BigInteger bigmax = new BigInteger("-9999999999");
BigInteger bigmax2 = new BigInteger("0");
BigInteger bigmin = new BigInteger("9999999999");
BigInteger bigsum = new BigInteger("0");
// 使用BigInteger读文件按行读取文件
while ((line = br.readLine()) != null) {
sp = line.split(" ");// 按空格进行分割函数
for (i = 0; i < sp.length; i++) {
snum[temp] = sp[i];
temp++;
}
}
// 数据转换
try {
for (i = 0; i < snum.length; i++) {// 转化为BigInteger
if (snum[i] != null) {
big[i] = new BigInteger(snum[i]);
big2[i] = big[i];
//System.out.println(big[i]);
bigsum = bigsum.add(big[i]);
}
}
} catch (NumberFormatException e) { // 数据转换时的异常处理完成要求3
System.out.println("文件中存在异常字符,请更新后再次尝试!");
return;
}
i = 0;
// 求出文件中的数据的个数k
while (big[i] != null) {
k++;
i++;
}
// 求子数组最大值
BigInteger b0 = new BigInteger("0");
for (i = 1; i < k; i++) {
if (big[i-1].compareTo(b0) > 0) {
big[i] = big[i].add(big[i-1]);
}
}
for (i = 0; i < k; i++) {
if (big[i].compareTo(bigmax) > 0) {
bigmax = big[i];
}
}
System.out.println("所有子数组的和的最大值为" + bigmax);
// 环形数组求子数组最小值
for (i = 1; i < k; i++) {
if (big2[i-1].compareTo(b0) < 0) {
big2[i] = big2[i].add(big2[i-1]);
}
}
for (i = 0; i < k; i++) {
if (big2[i].compareTo(bigmin) < 0) {
bigmin = big2[i];
}
}
bigmax = bigsum.subtract(bigmin);
//System.out.println(bigsum);
//System.out.println(bigmin);
if(bigmax.compareTo(bigmax2) > 0) {
System.out.println("环形数组的所有子数组的和的最大值为" + bigmax);
}else {
System.out.println("环形数组的所有子数组的和的最大值为" + bigmax2);
}
}

}

package shujuguanli;

import java.util.Scanner;

public class unit {
public static int Largest(int list[],int length)
{
int i,max=-9;
for(i=0;i<(length-1);i++)
{
if(list[i]>max)
{
max=list[i];
}
}
return max;
}

}

标签:BigInteger,++,big,System,println,new,第二阶段
来源: https://www.cnblogs.com/chenyutong0321/p/16053001.html