我必须在2维数组上添加2008年选举的每个州的选票,但是当我运行代码时,它仅对第一行求和,然后将自身与前面的总和相加51次,如下所示:


州奥巴马麦凯恩其他州总计
阿拉巴马州813479 1266546 19794 2099819 2426016 72985等...
阿拉斯加123594 193841 8762 2099819 2426016 72985等...


但是我只需要在每行一次上添加每个州的总票数。

public static void main(String[] args) throws IOException
{
  // TODO code application logic here
  File election = new File("voting_2008.txt");
  Scanner sc = new Scanner(election);

  String[] states = new String[51];
  int[][]votes = new int[51][4];
  int[] Totalbystate = new int[votes.length];

  for (int s=0; s < 51; s++)
  {
    states[s] = sc.nextLine();
  }

  for(int c=0; c < 3; c++)
  {
    for(int s=0; s < 51; s++)
    {
      votes[s][c] = sc.nextInt();
    }
  }

  Formatter fmt = new Formatter();
  fmt.format("%20s%12s%12s%12s%21s", "State", "Obama", "McCain", "Other", "Total by state");
  System.out.println(fmt);
  for (int s=0; s < 51; s++)
  {
    fmt = new Formatter();
    fmt.format("%20s", states[s]);
    System.out.print(fmt);
    for(int c=0; c < 3; c++)
    {
      fmt = new Formatter();
      fmt.format("%12d", votes[s][c]);
      System.out.print(fmt);
    }
    int sum =0;
    for(int row=0; row < votes.length; row++)
    {
      for (int col=0; col < votes[row].length; col++)
      {
        sum = sum + votes[row][col];
      }
      fmt = new Formatter();
      fmt.format("%21d", sum);
      System.out.print(fmt);
    }

    System.out.println();
  }
}

最佳答案

但是当我运行代码时,它仅对第一行求和,然后将自身与前面的总和相加51次,如下所示:


查看您的代码:

int sum =0;
for(int row=0; row < votes.length; row++)
{
    for (int col=0; col < votes[row].length; col++)
    {
        sum = sum + votes[row][col];
    }
    fmt = new Formatter();
    fmt.format("%21d", sum);
    System.out.print(fmt);
}


查看将sum设置为0的位置。现在考虑将其设置为0的位置...

09-12 19:58