0

2008年の選挙の州ごとの投票を2次元配列に追加する必要がありますが、コードを実行すると、最初の行のみが合計され、次のように右側の前の合計に51回追加され続けます。

  • 州オバママケインその他州別合計
  • アラバマ813479126654619794 2099819242601672985など..
  • アラスカ1235941938418762 2099819242601672985など..

しかし、私は各州の総投票数を1行に1回だけ追加する必要がありました。

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();  
  }  
}  
4

1 に答える 1

1

しかし、コードを実行すると、最初の行のみが合計され、次のように右側に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);  
}

0に設定している場所を確認します。sum次に、0に設定する場所について考えます

于 2012-10-09T16:32:59.687 に答える