首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Java中将一维数组转换为二维数组

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

Stack Overflow用户
提问于 2015-07-13 15:09:03
回答 4查看 20.3K关注 0票数 0

我想读取一个矩阵形式的文件,所以我试着读取一个文件,把它放在字符串数组中,然后转换成整数数组。现在我需要一个二维整数数组。有人能帮忙吗?有什么更好的方法吗。

代码语言:javascript
运行
复制
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;
         }

     }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-07-13 15:52:17

在线后

代码语言:javascript
运行
复制
int[] sum= Convert(stockArr); 

将整个文件保存在一个一维整数数组中。此时,您必须确定2D数组的宽度和高度。

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

代码语言:javascript
运行
复制
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];
   }
}

我在sum索引中使用的方程是一个从一维坐标到2D坐标的转换函数。从j和i都开始等于0,和*4+i= sum0 *4+0=和。变量i将在下一步增加一个变量,我们将有sum0 *4+1= sum1。在行的末尾,我将重置为0,j将增加1。在这一点上,我们将有sum1 *4+0= sum4,或者sum的第五个元素。如果将前四个元素视为第一行的元素,则这是有意义的。既然我们已经进入了新的行列,我们就可以用接下来的四排来填充它。我刚才提到的“四”是我们在声明2D数组时定义的行的宽度。

请记住,2D数组的宽度和高度不能相乘而大于一维数组中的整数总数。如果您尝试阅读超出此大小的内容,您将得到一个IndexOutOfBoundsException。

票数 1
EN

Stack Overflow用户

发布于 2018-05-16 13:44:39

假设你有10周的一周中的每一天的温度数据(也就是70条数据)。您希望将其转换为2d数组,其中行表示周,列表示天数。给你:

代码语言:javascript
运行
复制
int temp[70] = {45, 43, 54, ........}
int twoD[30][7]

for(int i=0; i < 70; i++) {
   twoD[i / 7][i % 7] = temp[i]
}

就这样。

票数 2
EN

Stack Overflow用户

发布于 2015-07-13 15:58:41

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

代码语言:javascript
运行
复制
String Integer1;
String Integer2;
String[] TotalString;
TotalString = stockArr[i].Split(",");
Integer1 = TotalString[0];
Integer2 = TotalString[1];

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31387022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档