【问题标题】:n-by-n integer array [closed]n×n 整数数组
【发布时间】:2016-09-01 23:07:51
【问题描述】:

问题陈述:

我想编写一个程序,从标准输入读取一个正整数 n 并创建一个 n×n 整数数组a[][],这样a[i][j] 是第 (i+1) 行与第 (j+1) 列。

当前代码:

Scanner input = new Scanner(System.in);
String inputString;
char flag = 'y';
while (flag != 'q' && flag != 'Q') {
    System.out.print("Enter a positive integer:");
    int value = input.nextInt();
    System.out.printf("Enter q to quit or any other key to quit: ");
    input.nextLine();
    inputString = input.nextLine();
    flag = inputString.charAt(0);
}

例如

如果用户输入 3,则矩阵需要是 3x3,并且有 1 乘以 1、1 乘以 2 和 1 乘以 3 的乘积。然后对 2 和 3 执行相同的操作。

【问题讨论】:

  • 我真的只需要如何做数学的帮助,我可以弄清楚其余的提前谢谢
  • 这是什么意思:例如,如果用户输入 3,则矩阵需要为 3x3,并且 1 乘以 1、1 乘以 2 和 1 乘以 3 的乘积。然后执行2 和 3 一样。?你能举个例子吗?
  • imgur.com/q7VwHTD 这是矩阵的基本外观
  • 那的输入是什么?
  • 它是用户输入,因此取决于

标签: java matrix calc


【解决方案1】:

您的问题的算法描述应如下所示:

第 1 步: 用户输入一个正整数 n
第 2 步: 创建一个 nxn 矩阵
第 3 步:对于每个元素 (i,j),矩阵在 (i,j) 处的值是 (i+1)*(j+1)

实施:

public class Snippet {
public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    System.out.print("Enter a positive integer:");
    int n = input.nextInt();

    int[][] a = new int[n][n];

    for (int i = 0; i < a.length; i++) {
        for (int j = 0; j < a.length; j++) {
            a[i][j] = (i + 1) * (j + 1);
        }
    }

    for (int[] is : a) {
        System.out.println(Arrays.toString(is));
    }
 }
}

【讨论】:

    【解决方案2】:
     public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
    
        String inputString;
        char flag = 'y';
        int matrix[][];
        while (flag != 'q' && flag != 'Q') {
            System.out.print("Enter a positive integer:");
            int value = input.nextInt();
            System.out.printf("Enter q to quit or any other key to quit: ");
            if(value > 0){
                matrix = new int[value][value];
                displayOutput(matrix);
            }
    
            input.nextLine();
            inputString = input.nextLine();
            flag = inputString.charAt(0);
        }
    }
    
    private static void displayOutput(int[][] matrix) {
        for (int i = 0; i < matrix.length; i++) {
    
            matrix[i][0] = i+1;
        }
        for (int j = 1; j < matrix.length; j++) {
            for (int i = 0; i < matrix.length; i++) {
                matrix[i][j] = matrix[i][0]*(j+1);
            }            
        }
    
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix.length; j++) {
                System.out.print(" "+matrix[i][j]);
            }
            System.out.println("");
        }
    
    }
    Input: 3
    Outputs: 1 2 3
             2 4 6
             3 6 9
    

    【讨论】:

    • @AyoubFalah Big O 和你一样仍然是 O(n*n)
    • 是的,你是对的,但是让 P1 和 P2 成为两个程序,P1 具有以下形式的指令 O(nn) UO(nn) U .. . UO(nn) 和 P2 具有以下形式的指令 UO(nn)。因此,虽然 P1 和 P2 具有相同的 order ,但 P2 比 P1 快
    猜你喜欢
    • 2019-07-12
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多