2016-11-05 7 views
1
package pkg2darray; 

    import java.util.*; 
    public class Main { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) 
    { 
     int [][] twodimarr={{1,5,4},{8,7,8},{6,4,3}}; 
     int lsum=0; 
     int rsum=0; 
     int ctr1=0; 
     int ctr2=2; 
     int rowsum=0; 
     int columnsum=0; 
     int max=0; 
     int RowIndex=0; 

     for(int i=0;i<twodimarr.length;i++) 
     { 
      rowsum=0; 
      columnsum=0; 
      for(int j=0;j<twodimarr.length;j++) 
      { 
       rowsum+=twodimarr[i][j]; 
       columnsum+=twodimarr[i][j]; 
       if (i==j) 
       { 
        lsum+=twodimarr[i][j]; 
       } 

       if(i==ctr1&&j==ctr2) 
       { 
        rsum+=twodimarr[i][j]; 
       } 
      } 


      ctr1++; 
      ctr2--; 
      System.out.println("ROW SUMMATION:"+rowsum); 
       if (rowsum>max) 
      { 
       max=rowsum; 
       RowIndex=i; 
      }  
     } 
     System.out.println("left diagonal:"+lsum); 
     System.out.println("right diagonal:"+rsum); 
     System.out.println("column SUMMATION:"+columnsum); 
     System.out.println("Max=" + max + " Row with row= "+ RowIndex); 
    } 
} 
+0

ここではいくつかの文脈と説明が使用されています。 – ted

+0

右の各列の合計が機能していません。私はあなたが質問をしていると思った。しかし、あなたは正しいとは言えません。 – JohnG

+0

はい、それは私のコードだと私はどのように各列の合計を取得するか分からない – menna

答えて

0

2行を追加するだけです。ここでは、関連する部分があります:

for(int j=0;j<twodimarr.length;j++) 
{ 
    rowsum+=twodimarr[i][j]; 
    columnsum+=twodimarr[j][i]; // for this row(j), add this column(i) 
    if (i==j) 
    { 
     lsum+=twodimarr[i][j]; 
    } 

    if(i==ctr1&&j==ctr2) 
    { 
     rsum+=twodimarr[i][j]; 
    } 
} 

ctr1++; 
ctr2--; 
System.out.println("ROW SUMMATION:"+rowsum); 
System.out.println("column SUMMATION:"+columnsum); // display col sum 

これが生成します。

ROW SUMMATION:10 
column SUMMATION:15 
ROW SUMMATION:23 
column SUMMATION:16 
ROW SUMMATION:13 
column SUMMATION:15 
left diagonal:11 
right diagonal:17 
Max=23 Row with row= 1 
+0

はいそれは働いていますuiは出力を修正して作業中です – menna

+0

私の答えがあなたを助け、 upvotingと私の答えを受け入れることを検討してください。出力を修正する助けが必要な場合はここに質問するか、新しい質問にお礼します – davedwards

0

これは、二つのint型の配列を追加します。 1つは行の合計を保持し、もう1つは列の合計を保持します。

public static void main(String[] args) 
{ 
    int [][] twodimarr={{1,5,4},{8,7,8},{6,4,3}}; 
    int lsum=0; 
    int rsum=0; 
    int ctr1=0; 
    int ctr2=2; 
    //int rowsum=0; 
    //int columnsum=0; 
    int max=0; 
    int RowIndex=0; 
    int [] rowSums = {0,0,0}; 
    int [] columnSums = {0,0,0}; 

    for(int row=0; row<twodimarr.length; row++) 
    { 
    //rowsum=0; 
    for(int col=0; col<twodimarr.length; col++) 
    { 
     rowSums[row] += twodimarr[row][col]; 
     columnSums[row] += twodimarr[col][row]; 
     if (row == col) 
     { 
     lsum += twodimarr[row][col]; 
     } 

     if(row == ctr1 && col == ctr2) 
     { 
     rsum += twodimarr[row][col]; 
     } 
    } 
    ctr1++; 
    ctr2--; 
    if (rowSums[row] > max) 
    { 
     max = rowSums[row]; 
     RowIndex = row; 
    }  
    } 
    System.out.println("left diagonal: "+lsum); 
    System.out.println("right diagonal: "+rsum); 
    System.out.println("column SUMMATION: Col: "+ columnSums[0] + " " + columnSums[1] + " " + columnSums[2]); 
    System.out.println("row SUMMATION: "+ rowSums[0] + " " + rowSums[1] + " " + rowSums[2]); 
    System.out.println("Max=" + max + " Row with row= "+ RowIndex); 
} 
+0

ありがとう、しかし、私はバグのスケールでそれを行う方法を知っている必要があります行列は1000要素が含まれています私はこれを行うことができません: ) – menna

+0

@mennaあなたは正しいですが、これはおそらく大きなデータセットでは最良のアプローチではありません。これを考慮して、あなたがここで助けてくれるような、どんな種類の "オブジェクト"を作成することができますか?そして/またはあなたがここで助けるために作ることができるいくつかの "方法"は何ですか?あなたが「バグ」スケールで言ったように、問題をより小さなものに分割する必要があります。たぶんメソッドは、データセットの特定の部分だけに焦点を合わせました。ちょっとした考え。 – JohnG

+0

最初に助けてくれてありがとうございました:)そして、はい、私は中期の後に大きなスケールで投稿します。なぜなら、明日はオブジェクト指向の試験があるからです – menna

関連する問題