2016-05-06 33 views
-3

问题陈述:正乘n的整数数组

我想要写一个程序,读取在一正整数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的矩阵需要是3×3和具有1乘以1的产物

,1乘以2和1乘以3.然后对2和3做同样的事情。

+0

我真的只需要帮助,如何做数学我可以找出其余的预先感谢 – user2962426

+0

这是什么意思:例如,如果用户输入3矩阵需要是3×3,并有乘以1的乘积乘以1,1乘以2,1乘以3.然后对2和3做同样的事情。你能举一个例子吗? – raven

+0

http://imgur.com/q7VwHTD这里是矩阵应该看起来像基本 – user2962426

回答

-3
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 
+0

@AyoubFalah大O仍然是O(n * n),就像您的 – raven

+0

是的您是对的,但让P1和P2为两个程序,P1具有以下指令形式O(n * n)UO(n * n)U ... UO(n * n)并且P2具有以下形式UO(n * n)的指令。所以,尽管P1和P2具有相同的顺序,但P2比P1快 –

1

你的问题的算法描述应该是这样的:

步骤1:用户输入一个正整数n
步骤2:创建一个NxN矩阵
步骤3:对于每个元素(I,J),则基体的(ⅰ的值,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)); 
    } 
} 
}