public class FillAndSortRandomFloatMatrix
{
	public static void printMatrix(float[][] m)
	{
		float sumRighe = 0;
		float[] sumColonne = new float[m.length];
		for (int i=0; i<m.length; i++)
		{
			for (int j=0; j<m[i].length; j++)
			{
				System.out.printf(" %.1f", m[i][j]);
				sumRighe += m[i][j];
				sumColonne[i] += m[j][i];
			}
			System.out.printf(" - S: %.1f\n", sumRighe);
			sumRighe = 0;
		}
		
		for (int i=0; i<sumColonne.length; i++)
			System.out.printf("  | ");
		System.out.println();
		
		for (int i=0; i<sumColonne.length; i++)
			System.out.printf(" %.1f", sumColonne[i]);
		System.out.println();
	}
	
	public static float[][] sortMatrix(float[][] matrix)
	{
		for (int i=0; i<matrix.length; i++)
			for (int k=0; k<matrix[i].length-1; k++)
				for (int h=k; h<matrix[i].length; h++)
					if (matrix[i][k] > matrix[i][h])
					{
						float app = matrix[i][h];
						matrix[i][h] = matrix[i][k];
						matrix[i][k] = app;
					}
		for (int i=0; i<matrix.length; i++)
			for (int k=0; k<matrix[i].length-1; k++)
				for (int h=k; h<matrix[i].length; h++)
					if (matrix[k][i] > matrix[h][i])
					{
						float app = matrix[h][i];
						matrix[h][i] = matrix[k][i];
						matrix[k][i] = app;
					}
		return matrix;
	}
	
	public static void main(String[] argv)
	{
		float[][] matrix = new float[4][4];
		
		for (int i=0; i<matrix.length; i++)
			for (int j=0; j<matrix[i].length; j++)
				matrix[i][j] = (float)( Math.random() );
		
		printMatrix(matrix);
		
		matrix = sortMatrix(matrix);

		System.out.printf("\n\nStampa Matrice Ordinata:\n");
		printMatrix(matrix);
	}
}