2017-12-01 17 views
-1

私が望むのは、4つのエントリ、つまり2行2列の要素が交換されたプログラムです。私は11 22を入力した場合の出力は行列であろうマトリックスJavaマトリックスの交換要素

1 2 3 4 
5 6 7 8 
9 10 11 12 

から、ある は、(I 1としない0のインデックスを開始する)それらの位置を交換しました。 アウト:

6 2 3 4 
5 1 7 8 
9 10 11 12 

私が持っているコード:

public static int[][] change(int[][] matrix, int size, int x1, int x2, int y1, int y2) { 
    int x; 

    x = matrix[x1][x2]; 
    matrix[x1][x2] = matrix[y1][y2]; 
    matrix[y1][y2] = x; 

    return matrix; 
} 
+3

さてあなたは、インデックス1で開始した場合、あなたのコードでこれを反映しなければなりません同じように。 – QBrute

+0

それで問題は何ですか?上に列挙したように1つのエラーが発生していますか、それとも何か間違っていますか?私はあなたの質問で質問を見つけることができません – phflack

+0

私はその方法を持っているし、それを印刷し、列を変更しない別の1つは、私が参照していたものです。 – Fernando

答えて

2

配列は、そのインデックスに0から開始されます。そうあなたは、単にすべてを解決する別の方法をしたい

public static int[][] change(int[][] matrix, int size, int x1, int x2, int y1, int y2) { 
    int x; 
    x1--; x2--; y1--; y2--; 

    x = matrix[x1][x2]; 
    matrix[x1][x2] = matrix[y1][y2]; 
    matrix[y1][y2] = x; 

    return matrix; 
} 
+0

私はそれを得ることはありません。私はその方法を持っていますし、それを印刷して列を変更しない別の方法もあります。それは私が言及したものです。 – Fernando

+0

私は行列にエッジを持っているので、それは無関心です。とにかく結果は、同じ行列を印刷しません。率直に言って、私には関係していない@FernandoBenavidel。 – Fernando

+0

このコードは2つの値を交換します。配列をどのように作成し、メソッドに渡し、印刷に渡すか、印刷がどのように見えるかを示していません。それは別の話題なので、この質問でそれを行うべきではありません。あなたは**あなたのコードを**デバッグ**する必要があります。 – luk2302

2

1た場合は、あなたがそのオフセットを補正する必要がある最初の値にアクセスすることになっていますか?私はそこに良い気分で午前:

public static void main(String[] args) 
     { 
     if (args.length != 2) { 
      System.out.println("two arguments required") 
     } else { 
      int x1 = Integer.parseInt(args[0])/10 -1; 
      int x2 = Integer.parseInt(args[0]) % 10 -1; 
      int y1 = Integer.parseInt(args[1])/10 -1; 
      int y2 = Integer.parseInt(args[1]) % 10 -1; 
      change(matrix, x1, x2, y1, y2);  
     } 
     } 

私はあなたに、変数の初期化を残して、あなたのJavaのスキルを磨くために、無効なキャッチ:)

+0

私は対角線だけでなく行列の要素を一般的に必要とします。 – Fernando

+0

とどのように正確にこの1つは非斜めに配置されたものを交換しないでしょうか? –

+0

私は既にキーボード入力を持っています。行列の要素を交換するメソッドが必要です。私はその方法を作ったが、マトリックスを印刷しない。私はメインのマトリックスを印刷する別の方法があります。 – Fernando

関連する問題