Java中如何将一维数组转换为二维数组

Java中如何将一维数组转换为二维数组,java,arrays,Java,Arrays,我想读取一个矩阵形式的文件,所以我尝试读取一个文件,将其放入字符串arraylist中,然后转换为整数数组。现在我需要一个2D整数数组。有人能帮忙吗?有没有更好的办法 public class readMat { private static ArrayList<String> list = new ArrayList<String>(); public static void main (String[] args) { // re

我想读取一个矩阵形式的文件,所以我尝试读取一个文件,将其放入字符串arraylist中,然后转换为整数数组。现在我需要一个2D整数数组。有人能帮忙吗?有没有更好的办法

public class readMat {

private static ArrayList<String> list = new ArrayList<String>();

  public static void main (String[] args)
     {
          // read file and put in arraylist
         try 
            {
        Scanner s = new Scanner(new File("link_info_test.txt"));

        while (s.hasNext())
         {
          list.add(s.next()); 

        }

    } 
    catch (Exception e)
       {
        e.printStackTrace();            
       }
    String[] stockArr = new String[list.size()];
    stockArr = list.toArray(stockArr);
    int[] sum= Convert(stockArr);       

       }
      // convert string arraylist to integer 1 dimensional array    private static int[] Convert(String[] stockArr)
     {
             if (list != null)
           {
           int intarray[] = new int[stockArr.length];
           for (int i = 0; i < stockArr.length; i++) 
           {
           intarray[i] = Integer.parseInt(stockArr[i]);
           }
           return intarray;
           }
           return null;
         }

     }
公共类readMat{
私有静态ArrayList=新ArrayList();
公共静态void main(字符串[]args)
{
//读取文件并放入arraylist
尝试
{
扫描仪s=新扫描仪(新文件(“link_info_test.txt”);
而(s.hasNext())
{
添加(s.next());
}
} 
捕获(例外e)
{
e、 printStackTrace();
}
String[]stockArr=新字符串[list.size()];
stockArr=list.toArray(stockArr);
int[]总和=转换(stockArr);
}
//将字符串arraylist转换为整数一维数组专用静态int[]转换(字符串[]stockArr)
{
如果(列表!=null)
{
int intarray[]=新int[stockArr.length];
对于(int i=0;i
行后

int[] sum= Convert(stockArr); 
您的整个文件都是一维整数数组。此时,必须确定二维阵列的宽度和高度

假设您希望2D数组具有3行4列作为示例。这样做:

int[][] int_table = new int[3][4];
for(int j = 0; j < 3; j++)
{  
   for(int i = 0; i < 4; i++)
   {
      int_table[j][i] = sum[j * 4 + i];
   }
}
int[]int_table=new int[3][4];
对于(int j=0;j<3;j++)
{  
对于(int i=0;i<4;i++)
{
整数表[j][i]=和[j*4+i];
}
}
我在sum索引中使用的方程是一个从一维坐标到二维坐标的转换函数。从j和i都等于0开始,求和[j*4+i]=求和[0*4+0]=求和[0]。变量i将在下一步增加1,我们将得到sum[0*4+1]=sum[1]。在行的末尾,我将重置为0,j将增加1。在这一点上,我们将得到sum[1*4+0]=sum[4],或者sum的第五个元素。如果将前四个元素视为第一行的元素,这是有意义的。现在我们在新的一行,我们可以用下四行填充它。我提到的“四”是我们在前面声明2D数组时定义的行的宽度


请记住,2D数组的宽度和高度不能相乘而大于1D数组中的整数总数。如果试图读取超出该大小的内容,则会出现IndexOutOfBoundsException。

假设字符串数组的每个条目都由一些整数组成,并由一些分隔符(逗号、点、连字符等)分隔,则可以使用String.split()方法。例如,如果分隔符是逗号,则可以执行以下操作:

String Integer1;
String Integer2;
String[] TotalString;
TotalString = stockArr[i].Split(",");
Integer1 = TotalString[0];
Integer2 = TotalString[1];

然后将字符串解析为整数,并将它们放入数组中

如果我理解了,你的问题是正确的,你想把一维数组转换成二维数组。。。您可以使用以下方法

public static int[][] convertArrayTo2DArray(final int[] _1darray) {
    int[][] _2dArray = null;
    int size = _1darray.length / 2;
    if (_1darray.length % 2 == 0) {
        _2dArray = new int[2][size];
    } else {
        _2dArray = new int[3][size];
    }

    int index = 0;
    outter: for (int i = 0; i < _2dArray.length; i++) {
        for (int j = 0; j < _2dArray[i].length; j++) {
            if (index == _1darray.length) {
                break outter;
            }
            _2dArray[i][j] = _1darray[index];
            index++;
        }
    }
    return _2dArray;
}
public static int[]convertArrayTo2DArray(final int[]\u 1darray){
int[][]\u 2dArray=null;
int size=_1darray.length/2;
if(1darray.length%2==0){
_2dArray=新整数[2][size];
}否则{
_2dArray=新整数[3][size];
}
int指数=0;
outter:for(int i=0;i<\u 2dArray.length;i++){
对于(int j=0;j<_2dArray[i]。长度;j++){
如果(索引==\u 1darray.length){
突发事件;
}
_2dArray[i][j]=1darray[index];
索引++;
}
}
返回2du数组;
}

假设您有10周内每天的温度数据(即70条数据)。您希望将其转换为二维数组,其中行表示周,列表示天。给你:

int temp[70] = {45, 43, 54, ........}
int twoD[30][7]

for(int i=0; i < 70; i++) {
   twoD[i / 7][i % 7] = temp[i]
}
int temp[70]={45,43,54,…}
int twoD[30][7]
对于(int i=0;i<70;i++){
twoD[i/7][i%7]=临时工[i]
}

就是这样。

二维整数数组包含什么?目标是将
stockArr
转换为2D
int数组
?可能是重复的非常感谢我得到了答案