0

埋め込み for ループを使用して NxN マトリックスを作成しようとしています。私はほとんどそれを持っていると思いますが、ループに何かが欠けているように感じます. ユーザーは私に n を与えると仮定し、その入力に基づいて行列を生成します。

public static void printMatrix( int n ){



    for ( int i = 1; i < n; i++ ){
        System.out.println(" "+(int)(Math.random() + 0.5));

        for( int k = 1; k < n+1; k++)
            System.out.print(" "+(int)(Math.random() + 0.5));

    }
}
4

2 に答える 2

2

「マトリックス」を出力するには、2 番目のループ内に print ステートメントのみが必要です。つまり、

public static void printMatrix(int n)
{
    for( int i = 1; i <= n; i++ )
    {
        for( int k = 1; k <= n; k++ )
            System.out.print("\t"+(int)(Math.random() + 0.5));
        System.out.println();
    }
}

実際には、ここでは実際に行列を作成しているのではなく (つまり、2D 配列などの構造に格納していないことを意味します)、n*nランダムな値の数を出力しているだけです。

そのためにも、

public static void printMatrix(int n)
{
    int[][] yourArray = new int[n][n];
    for( int i = 1; i <= n; i++ )
        for( int k = 1; k <= n; k++ )
            yourArray[i][k] = Math.random() + 0.5; //Populating the array.
    for( int i = 1; i <= n; i++ )
    {
        for( int k = 1; k <= n; k++ )
            System.out.print("\t"+yourArray[i][k]); //Reading data from the array.
        System.out.println();
    }
}
于 2013-03-04T17:25:21.960 に答える
0

forマトリックスの行数を制御するために最初のループを使用しようとしているようです。これは良い考えですが、最初の for ループを見てください

for ( int i = 1; i < n; i++)

何回の繰り返しがありますか?

これで、2 番目のループを使用して 1 つの行のすべての要素を印刷しようとしているように見えますがfor、これも良い考えです。唯一の問題は、この秒内の行の要素を印刷する前に、改行マークを付けて追加の乱数を印刷していることですfor。その行のすべての要素を秒内に既に出力しているため、その前に別の要素を出力する必要がないことに注意してください。

また、最初に空行で終わりたくない場合は、行全体を印刷した後に改行マークを印刷してみてください。

于 2013-03-04T17:42:50.143 に答える