2017-10-21 7 views
0

こんにちはイム、私はすでにクラスフラクション、以下のコードを作成します。私の主な機能には、分子と分母を受け行列の乗算(画分)現在、画分を有するマトリックスmultplicationのためのJavaプログラムを作成

public Fraccion (int n,int m){ 
    numerador = n; 
    denominador = m; 
} 

iは、行列の2×2×3のように... はとイムは、現在予想される出力を得ることを作成するには、行列のサイズを受けます。

ので、これはメインクラスの私のコードです(私が欲しいものthat'sがあるため) 私の問題は、それ自体で行列をmultiplicatingためである

private static void transicion() 
{ 
    //size of matriz 
    Fraccion[][] tmp = new Fraccion[cuantos][cuantos]; 
    //cloning the matrix to a temporal matrix 
    tmp = matrix.clone(); 
    //set boundaries for matrix so dont go out of bounds 
    int rowLimit = matrix.length; 
    int colLimit = matrix[0].length; 

    for (int i = 0; i < matrix.length; i++) 
    { 
     for (int j = 0; j < matrix[i].length; j++) 
     { 
      //method to multiply a fraction with another (producto_con) 
      if ((j+1<colLimit) && (matrix[i][j] == matrix[i][j+1])) 
       matrix[i][j].producto_con(tmp[i][j+1]); 
      if ((i+1<rowLimit) && (matrix[i][j] == matrix[i+1][j])) 
       matrix[i][j].producto_con(tmp[i][j+1]); 
      System.out.println(); 
      matrix[i][j].imprimete(); 
     } 
     System.out.println(); 
    } 

} 
//this is the method to multiply fractions on the fraction class 
public Fraccion producto_con(Fraccion laOtra){ 
    int numTmp, denTmp; 
    numTmp = numerator * laOtra.getnumerator(); 
    denTmp = denominator * laOtra.getdenominator(); 
    Fraccion laNueva = new Fraccion(numTmp,denTmp); 
    return laNueva; 
} 

が、私は、メソッドtransicionを印刷するとき、印刷します変更なしで同じマトリックス、助けやアドバイスをしてください?

+1

しかし、あなたは 'return laNueva;'値を決して使用しませんか? –

答えて

0

新しいFraccionオブジェクトを作成するが、その後何に割り当てるされていません。そう...もちろん...何も変わりません。

分子と分母の値がintの値で保存され、どちらか一方がオーバーフローする可能性はありません。それが起こると、ゴミ値になります。 Integer.MAX_VALUEが困難であるよりも大きい分母/分子の値で正しく対処

  • 最も単純なオプションは、オーバーフローしない表現を使用することです(ユースケースで)。例えばBigIntegerでも、ヒープサイズによって制限されています。

  • あなたが見つけると分母と分子に共通する要因をキャンセルすることができます場合は、さらにそれをプッシュすることができますが、唯一の要因は大きな素数であれば因数分解は...と難治高価である。)

+0

これで新しい分数を作成し、メソッドの値を代入して、新しい行列を作成して行列にその値を入力します。 –

+0

private static Fraccion nueva; Fraccion [] [] nuev =新しいFraccion [cuantos] [cuantos]; nueva = matrix [i] [j] .producto_con(tmp [i] [j + 1]);nuev [i] [j] = nueva; –

+0

それは正しいかもしれません。試して。 –

関連する問題