如何使用所有值打印出数组?

时间:2016-02-17 05:59:47

标签: java arrays

我尝试打印矩阵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;  
  }
}

4 个答案:

答案 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));

Reference

答案 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的第一个参数是正则表达式,而不是字符串本身。