avatar

目录
java 文件数据输入数组相关问题

java数据输入数组

在刷题的时候老是碰到多组数据的输入,有时候会出现录入错误,或格式的问题,因而写了一个程序来讲文本中的数据录入数组之中。

使用BufferedReader的readLine的方法来录入:

具体见代码:

java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package 蓝桥杯;

import java.io.*;

/**
* @author lszzz
* @create 2020/4/19
*/
public class MyInput {
private String fileName;
private int m,n;
private int a[][];

public MyInput(String fileName,int n,int m)
{
this.fileName=fileName;
this.n=n;
this.m=m;
a=new int [m][n];
}
//change的作用是如果结尾存在多个空格,会导致line.split出现错误,会将空格归入数组,造成错误,此处去除末尾的空格。
String change(String s)
{
int tmp=s.length();
while(s.charAt(tmp-1)==(char)160)
{
s=s.substring(0,tmp-1);
tmp--;
}
return s;
//System.out.println("fin");
}
public int[][] Read(String fileName) throws IOException {
File file=new File(fileName);
Reader r=new FileReader(file);
BufferedReader buf=new BufferedReader(r);
String line=null;
int row=0;
while((line=buf.readLine())!=null)
{
line=change(line);
String []str=line.split(" ");
for(int i=0;i<str.length;i++)
{
a[row][i]=Integer.parseInt(str[i]);
}
row++;
}
return a;
}

}

这里面有一个坑,在判断末尾是否为空格时,如果单单的==‘ ’是没法判断结尾是否为空格的,因为在ASCII码中32和160都表示空格,如果你的数据是从浏览器中复制来的那么他的空格的ASCII码就是160,如果是在IDEA手动输入的空格就代表32,因此需要进行判断后再进行处理。

两个空格区别:
32 是一般的空格;

160 non-breaking space(不换行空格)防止在其位置自动换行的空格字符,一般来源于网页复制。

文章作者: Liang Shuo
文章链接: http://yoursite.com/2020/04/19/java%E6%95%B0%E6%8D%AE%E8%BE%93%E5%85%A5%E6%95%B0%E7%BB%84/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 L·S
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论