2022/3/24
public class Demo {
public final static int max = 2147483647;
public static void main(String[] args)
{
int hang = 0;
int lie = 0;
int r=1;//用来将数组中的值相加
BufferedReader br =null;
try
{
br = new BufferedReader(new FileReader("D:\\input.txt"));
String contentLine = br.readLine();
//读入行数
int []a = new int[contentLine.length()-1];//将列数把string类型变为int存入数组
for(int i=0;i<contentLine.length()-1;i++)
{
a[i] = Integer.parseInt(String.valueOf(contentLine.charAt(i)));
}
for(int i=a.length-1;i>=0;i--){
hang = hang + a[i]*r;
r*=10;
}
r=1;//重置
//读入列数
contentLine = br.readLine();
int []b = new int[contentLine.length()-1];//将列数把string类型变为int存入数组
for(int i=0;i<contentLine.length()-1;i++)
{
b[i] = Integer.parseInt(String.valueOf(contentLine.charAt(i)));
}
for(int i=b.length-1;i>=0;i--){
lie = lie + b[i]*r;
r*=10;
}
r=1;
// System.out.println(hang);
// System.out.println(lie);
contentLine = br.readLine();
int [][]num=new int[hang][lie];//创建一个二维的整形数组
String s = "";
int y=0;
double v = 0;
for(int i=0;i<hang;i++)
{
for(int j=0;j<contentLine.length();j++)
{
if(contentLine.charAt(j)!=',')
{
s+=contentLine.charAt(j);
}
else
{
int []n = new int[s.length()];
int p = 1;
for(int z=0;z<s.length();z++)
{
n[z] = Integer.parseInt(String.valueOf(s.charAt(z)));
}
for(int g=s.length()-1;g>=0;g--){
v = v + n[g]*p;
p*=10;
}
if(v>max){
System.out.println("文件中有数值溢出的数");
return;
}else
{
num[i][y] = (int)v;
p=1;
y++;
s="";
v = 0;
}
}
}
y=0;
contentLine = br.readLine();//换到下一行
}
System.out.println("行数" + hang);
System.out.println("列数" + lie);
for(int i=0;i<hang;i++) {
for (int j = 0; j < lie; j++) {
System.out.print(num[i][j]+" ");
}
System.out.println();
}
}catch(IOException e)
{
e.printStackTrace();
System.out.println("文件中的数值超出,请检查");
}catch (Exception e){
e.printStackTrace();
System.out.println("文件中的数值超出,请检查");
}
}
}
input文件:

输出结果:

如果出现超出int范围的数值,则直接输出文件中有溢出的数。

解决的问题
- 如果有超出int范围的数任然可以运行并报错
- 可以输入多行多列的数值
浙公网安备 33010602011771号