java数据输入数组
在刷题的时候老是碰到多组数据的输入,有时候会出现录入错误,或格式的问题,因而写了一个程序来讲文本中的数据录入数组之中。
使用BufferedReader的readLine的方法来录入:
具体见代码:
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.*;
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]; } String change(String s) { int tmp=s.length(); while(s.charAt(tmp-1)==(char)160) { s=s.substring(0,tmp-1); tmp--; } return s; } 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(不换行空格)防止在其位置自动换行的空格字符,一般来源于网页复制。