我尝试打印矩阵AxA,其中显示了所有值,但我失败了。
输出应该是这样的:
1 2 3
4 5 6
谢谢
所以这是我的代码:
import java.util.Scanner;
public class Lab2 {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter a number for rows: ");
int rows = input.nextInt();
System.out.print("Enter a number for columns: ");
int columns = input.nextInt();
int[][] array = new int[rows][columns];
System.out.println("Enter the numbers in array: ");
for (int i = 0; i < array.length; i++)
{
for (int j = 0; j < array[i].length; j++)
array[i][j] = input.nextInt();
}
System.out.println(" " + array);
}
}
更新: 我能够打印出矩阵,但现在我遇到的第二个问题是计算矩阵每行和每列的平均值。我尝试使用这段代码,但它没有用,而且我知道我在这里遇到了一个重大问题,但我找不到。 从今天早上到现在,我一直这样做。不会撒谎,这是我的功课,可以测试我的基本知识。
我的新输出应该是:
1, 2, 3, ave=2
4, 5, 6, ave=5
ave=2.5, 3.5, 4.5
这是我现在的代码:
import java.util.Scanner;
public class Lab2 {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter a number for rows: ");
int rows = input.nextInt();
System.out.print("Enter a number for columns: ");
int columns = input.nextInt();
int[][] array = new int[rows][columns];
System.out.println("Enter the numbers in array: ");
for(int i=0 ; i<rows ; i++)
{
for(int j=0 ; j<columns ; j++)
{
array[i][j] = input.nextInt();
}
}
for(int i=0 ; i<rows ; i++)
{
for(int j=0 ; j<columns ; j++)
{
System.out.print(array[i][j] + " , ");
}
System.out.println("\n");
}
}
public static doube averageRow(int[][] array) {
int rowTotal = 0;
double average = 0;
for (int rows = 0; rows < array.length; rows++) {
for (int columns = 0; columns < array[rows].length; columns++) {
rowTotal += array[rows][columns];
}
average = rowTotal / array[rows].length;
System.out.println(average);
rowTotal = 0;
}
return rowTotal;
}
public static doube averageColumn(int[][] array) {
int columnTotal = 0;
double average = 0;
for (int columns = 0; columns < array.length; columns++) {
for (int rows = 0; rows < array[columns].length; rows++) {
columnTotal += array[rows][columns];
}
average = columnTotal / array[columns].length;
System.out.println(average);
columnTotal = 0;
}
return columnTotal;
}
}
答案 0 :(得分:1)
您可以使用相同的逻辑来读取和写入数组元素,请尝试使用此代码
读取数组......
for(int i=0;i<rows;i++)
{
for(int j=0;j<columns;j++)
{
array[i][j] = input.nextInt();
}
}
打印数组元素......
for(int i=0;i<rows;i++)
{
for(int j=0;j<columns;j++)
{
System.out.print(array[i][j] + " ");
}
System.out.println("\n");
}
答案 1 :(得分:1)
使用
Stream.of(array).map(Arrays::toString).forEach(System.out::println);
将打印:
[1 ,2, 3]
[4, 5, 6]
或
System.out.println(Arrays.deepToString(array));
答案 2 :(得分:0)
请记住,您无法简单地打印整个阵列。即:System.out.println(&#34;&#34; +数组);
你在正确的轨道上,但你需要使用for循环打印(试试printf,它功能强大):
for (int i = 0; i < array.length; i++)
{
for (int j = 0; j < array[i].length; j++){
System.out.printf("%d ", array[i][j]);
}
System.out.printf("\n");
}
答案 3 :(得分:0)
我能想到另一种单循环方式:
defer
for循环基本上遍历每一行,即&#39; a&#39;是矩阵中的数组(行)。 Arrays.toString(a)返回数组的等效字符串,例如对于a = [1,2,3,4,5],它将返回&#34; [1,2,3,4,5]&#34;。现在只需删除括号(子串)并用&#34;&#34;替换逗号(&#34;,&#34;),即可得到所需的结果。 请注意,replaceAll的第一个参数是正则表达式,而不是字符串本身。