格式化2D数组以具有加法问题的结构

时间:2019-04-21 00:38:15

标签: java arrays 2d

我正在尝试编写一个程序,其中涉及从.txt文件中读取行,并通过将它们转换为大小为25的int []数组来将它们添加在一起。我决定采用2D数组方法(已经跳出本课的“学到的知识”,将多个数组组合在一起。

Now here's what our professor wants us to get at.上图是我的教授描述添加内容的方式。我们将在字符串行中找到的整数附加到具有25个零的数组的末尾。例如,如果.txt文件的一行显示为“ 204 435 45”,则我们将其返回为:

0000000000000000000000204

0000000000000000000000435

0000000000000000000000045

然后,我们将按照照片链接中所述进行“基本算术”。现在,这就是我到目前为止所得到的:

//This is the total overall size of the arrays (with all the zeroes)
public static final int ARRSIZE = 25;

//This is the majority of numbers to add on the biggest line in the .txt file
//This is kind of irrelevant here, but it means we'll always an 8 long array of arrays
public static final int MAXFACTONALINE = 8;

public static void breakTwo(String line)
{
   //Changed the value of the parameter for testing purposes
   line = "204 435 45";
   int[][] factors = new int[MAXFACTONALINE][25];
   //int[] nums = new int[ARRSIZE];
   int determine = 0;
   boolean isSpace = false;
   for(int i = 0; i < line.length(); i++)
   {
      String breakdown = line.substring(line.length() - 1 - i, line.length() - i);
      if(breakdown.equals(" "))
      {
         isSpace = true;
         determine++;
      }

      if(breakdown.equals(""))
         break;

      if(!isSpace)
      {
         int temp = Integer.parseInt(breakdown);
         factors[determine][factors.length - i] = temp;
      }

      isSpace = false;
      i = 0;
   }

   //To do: Implement another method to carry on with the above processing
}

我打算在这里做的是将这三个数字分开(因为它们之间用空格隔开),并将它们放在自己的数组中,就像我在上面键入的三个数组一样。

我的输出通常将获得的数字放在随机索引处,而我对如何保持它们的去向并不了解。有人可以帮我确定如何将它们保持在右侧,如上面的示例所示吗?非常感谢

1 个答案:

答案 0 :(得分:1)

您可以利用内置函数split(String regex)为您拆分行。由于您知道它始终是空格,因此line.split(" ")将返回{“ 204”,“ 435”,“ 45”}的数组。

此后,计算字符串的长度并将其与仅包含前导0的25 - number.length的字符串连接。

    public static void breakTwo(String line)
    {
       String [] numbers = line.split(" ");
       String [] zeros = new String[numbers.length];


       for (int i = 0; i < numbers.length; i++) {
           zeros[i] = "0";
           for (int j = 0; j < ARRSIZE - numbers[i].length() - 1; j++) {
               zeros[i] += "0";
           }
           zeros[i] += numbers[i];
           System.out.println(zeros[i]);
       }
    }

breakTwo("204 435 45")的输出为

0000000000000000000000204
0000000000000000000000435
0000000000000000000000045