将文件中读出的字符串转化成二位数组的问题
以下是我将文件中读出的字符串转化成二位数组的代码,这段代码编译通过,执行时没有出现任何结果,不知道问题出在哪里?请大家指教!
以下是代码:
/*----------------------------------*/
import java.io.*;
public class readfile{
public String[][] arr;
public void getdata(){
try{
//建立文件对象
BufferedReader readStream = new BufferedReader(new FileReader( "D:\\eclipse\\workspace\\test1\\src\\x.txt "));
int scount=0;
String buff;
//动态创建它的两维部分
for(int i = 0,j = 2;i < arr.length;i++){
arr[i]= new String[j];
}
arr = new String[16][];
//初始化数组的值
for(int i = 0; i < arr.length; i++) {
while((buff=readStream.readLine())!=null){
for(int j = 0; j < arr[i].length; j++) {
if(j%2==0)
arr[i][j] = buff.substring(0, 12);//获取字符串其中一部分的串
else
arr[i][j] = buff.substring(14,29);
scount++;
}
}
}
//输出二维数组
for(int i =0; i < arr.length; i++){
for(int j = 0; j < arr[i].length; j ++) {
System.out.print( " " + arr[i][j]);
}
System.out.println( " ");
}
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException exp){
exp.printStackTrace();
}
}
public static void main(String[] args) {
new readfile();
}
}
文件x中的内容为:
8613825138980|460005103236984|
8613535143750|460005110339520|
8613725105950|460005112230392|
8613560416041|460000330616041|
8613642768780|460002761408780|
8613710450540|460000402142193|
8613697481540|460007431916497|
8613609740331|460009746005181|
8613560464731|460000340614731|
8613802957670|460008848162189|
8613710029530|460000022109530|
8613610038340|460000021136069|
8613570416011|460000400719770|
8613711560271|460001562100271|
8613533274350|460003270304350|
8613422277440|460020222707440|
/*----------------------------------*/
另外我写了一个这个的测试代码,也还是这样,执行后没有出现任何结果,原因?
/*----------------------------------*/
public class test {
public String[][] arr;
public test(){
arr = new String[0][];
for(int i = 0,j = 2; i < arr.length; i++) {
arr[i] = new String[j];
}
String s = "4184159415415 ";
for(int i = 0;i < arr.length; i++) {
for(int k=0;k <s.length();k++) {
for(int j = 0; j < arr[i].length;j++) {
if(j%2==0)
arr[i][j] = s.substring(0, 5);
else
arr[i][j] = s.substring(6, s.length());
}
}
}
for(int i = 0; i < arr.length; i ++) {
for(int j = 0; j < arr[i].length; j ++) {
System.out.print( " " + arr[i][j]);
}
System.out.println( " ");
}
}
public static void main(String[] args) {
new test();
}
}
/*----------------------------------*/
[解决办法]
首先,你在new 一个readfile对象时,并没有调用这个对象的getdata()方法,因此也就不会执行里面的代码,
改为
readfile rf=new readfile()
rf.getdata();
其次,你的getdata()方法,也是不能执行的,你都没有初始化 arr的大小,只是new 了一个数组,并没分配空间给他,然后你就调用arr.length,这样是不允许的,你可以自己试下