0

この2次元配列の州ごとの投票の合計と候補ごとの合計を加算するとします。

要件は次のとおりです。

  • 州ごとの総投票数が表示されるようにプログラムを変更します
    (つまり、州ごとのすべての候補者の総投票数を合計する列を各行に追加します)
  • 候補者ごとの合計投票数が表示されるようにプログラムを変更します(つまり、3列の投票すべてについて受け取った合計投票数を示す最後の行を追加します)

    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", Totalbystate) ;  
       System.out.println();
    }
    
4

1 に答える 1

6

問題は合計とは何の関係もなく、すべてがフォーマットと関係があります。このコードだけで同じ問題が発生します。

int[] values = new int[10];
new Formatter().format("%21d", values);

これが何を期待していたかは明確ではありませんが、実際には次のようなことをしたいと思っていると思います。

// Please change your variable names to follow Java conventions
fmt = new Formatter(System.out);
for (int value : Totalbystate) {
    fmt.format("%21d", value);
}

"%21d%21d%21d%21d%21d"または、 (etc)などの単一のフォーマット文字列を指定し、のInteger[]代わりに渡しint[]ます。

さらに、プログラムのインデントを修正する必要があります。現時点では、不必要に混乱しています。

于 2012-10-09T06:13:14.233 に答える