java无法赋值到二维数组
privateString[][]getFile(StringPathway)throwsException{Filefile=newFile(Pathway);Buff...
private String[][] getFile(String Pathway) throws Exception{
File file = new File(Pathway);
BufferedReader br = new BufferedReader(new FileReader(file));
String str = br.readLine();
ArrayList<String[]> list = new ArrayList<String[]>();
while((str=br.readLine())!=null){
int j = 0;
String[] arr = str.split("\r\n"); // 将结果作为字符串数组返回
String[] Arr = new String[arr.length];
for(String ss : arr){
Arr[j++] = ss;
}
list.add(Arr);
}
String[][] s = new String[list.size()][7];
for(int i = 0; i < s.length; i++){
for(int j = 0; j < list.get(i).length; j++){
s[i][j] = list.get(i)[j];
System.out.println( s[i][j]);
}
}
return s;
}
每行只有第一个被赋了值,其余的全为null 展开
File file = new File(Pathway);
BufferedReader br = new BufferedReader(new FileReader(file));
String str = br.readLine();
ArrayList<String[]> list = new ArrayList<String[]>();
while((str=br.readLine())!=null){
int j = 0;
String[] arr = str.split("\r\n"); // 将结果作为字符串数组返回
String[] Arr = new String[arr.length];
for(String ss : arr){
Arr[j++] = ss;
}
list.add(Arr);
}
String[][] s = new String[list.size()][7];
for(int i = 0; i < s.length; i++){
for(int j = 0; j < list.get(i).length; j++){
s[i][j] = list.get(i)[j];
System.out.println( s[i][j]);
}
}
return s;
}
每行只有第一个被赋了值,其余的全为null 展开
展开全部
1,创建二维数组语句:int[][] array = new int[3][3];
2,直接创建二维数组并赋值语句:int[][] array ={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}} ;
二维数组,也可以理解为用一维数组保存的元素为一维数组。对于三维数组,等等,都可以这样划分。不过我们在编程中使用三维以上的数组比较少。因为那样使用起来非常不方便。下面我们来学习二维数组的声明。其声明同一位数组一样,可以先声明再分配内存,也可以声明时分配内存
第一种,先声明再分配内存的方式
数组声明: 数据类型 数组名[][];
内存分配: 数组名 = new 数据类型[行的个数][列的个数];
举例: 假如我们需要统计一个象棋上放的是黑棋还是白棋。这时,我们可以建立一个坐标,即以象棋盘的两边建立坐标轴。这时,我们可以这样定义这个二维数组:
声明数组: int Chess[][];
内存分配 Chess= new int[64][64];
第二种,即声明时即分配内存的方式。
使用格式是: 数据类型 数组名[][] =new 数据类型 [行的个数][列的个数];
使用上个步骤中的例子,我们可以将数组的声明和分配内存写成以下方式:
声明即分配内存:int Chess[][] = new int[64][64];
二维数组的赋值,同一维数组类似。只是在{}中的每个元素又是每个一维数组。如下格式:
数据类型 数据名[][]={
{值1,值2,值3,值4 }, //第一行数据
{值5,值6,值7,值8}, //第二行数据
...,
}
二维数组中,可以有列数不相等的数组。即每一行的列数不同时。我们需要对每一行进行赋值。
对于这两种二维数组。我们分别来进行分别举例进行赋值。第一种是:列数相同的数组
其赋值格式如下:
String ClassRoom[][]={
{"小王","小李","小张"},
{"小红","小明","小花"},
}
即第一行的人数和第二行的人数相同。
第二种:即列数不相等的数组的赋值格式如下:
String ClassRoom[][]={
{"小王","小李","小张"},
{"小红","小明","小花"},
{"小雨","小风","小平","小雷"},
{"小单"}
}
看上述例子。对于不同的行,其相应的列数是不同的。
2,直接创建二维数组并赋值语句:int[][] array ={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}} ;
二维数组,也可以理解为用一维数组保存的元素为一维数组。对于三维数组,等等,都可以这样划分。不过我们在编程中使用三维以上的数组比较少。因为那样使用起来非常不方便。下面我们来学习二维数组的声明。其声明同一位数组一样,可以先声明再分配内存,也可以声明时分配内存
第一种,先声明再分配内存的方式
数组声明: 数据类型 数组名[][];
内存分配: 数组名 = new 数据类型[行的个数][列的个数];
举例: 假如我们需要统计一个象棋上放的是黑棋还是白棋。这时,我们可以建立一个坐标,即以象棋盘的两边建立坐标轴。这时,我们可以这样定义这个二维数组:
声明数组: int Chess[][];
内存分配 Chess= new int[64][64];
第二种,即声明时即分配内存的方式。
使用格式是: 数据类型 数组名[][] =new 数据类型 [行的个数][列的个数];
使用上个步骤中的例子,我们可以将数组的声明和分配内存写成以下方式:
声明即分配内存:int Chess[][] = new int[64][64];
二维数组的赋值,同一维数组类似。只是在{}中的每个元素又是每个一维数组。如下格式:
数据类型 数据名[][]={
{值1,值2,值3,值4 }, //第一行数据
{值5,值6,值7,值8}, //第二行数据
...,
}
二维数组中,可以有列数不相等的数组。即每一行的列数不同时。我们需要对每一行进行赋值。
对于这两种二维数组。我们分别来进行分别举例进行赋值。第一种是:列数相同的数组
其赋值格式如下:
String ClassRoom[][]={
{"小王","小李","小张"},
{"小红","小明","小花"},
}
即第一行的人数和第二行的人数相同。
第二种:即列数不相等的数组的赋值格式如下:
String ClassRoom[][]={
{"小王","小李","小张"},
{"小红","小明","小花"},
{"小雨","小风","小平","小雷"},
{"小单"}
}
看上述例子。对于不同的行,其相应的列数是不同的。
展开全部
问题排查:
String[] arr = str.split("\r\n"); //可能数组arr的长度就只有1,所以赋值的时候,只有第一个有值;System.out.println( "arr 长度:"+arr.length);
for(String ss : arr){
System.out.println( ss);
Arr[j++] = ss;
} 打印ss的值,如果存储数据没有特别要求,可以直接使用集合保存List<List<String>> ;
二维数组存储方式可以修改为:String[][] s = new String[list.size()][];//每个一维数组的长度是未知的,赋值的时候在创建二维数组的长度;for(int i = 0; i < s.length; i++){
s[i]=new String[list.get(i).length];
for(int j = 0; j < list.get(i).length; j++){
s[i][j] = list.get(i)[j];
System.out.println( s[i][j]);
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你得把j放在循环外面赋初值啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询