Java 程序创建矩阵并用阿姆斯特朗数填充它

javaobject oriented programmingprogramming更新于 2024/8/5 1:11:00

在 Java 中,矩阵可以用二维数组表示。矩阵用于存储和操作具有表格结构的数据。矩阵具有与其相关的几个属性和操作,例如加法、减法、乘法、转置和行列式计算。

根据问题陈述,我们必须创建一个矩阵并用阿姆斯特朗数填充它。

让我们开始吧!

例如

假设我们有一个 4*3 矩阵:

对矩阵执行操作后,结果将是:

输入行数:4

输入列数:3

阿姆斯特朗矩阵:

0 1 2
3 4 5
6 7 8
9 153 370

算法

步骤 1:获取矩阵的大小。

步骤 2:创建一个方阵。

步骤 3:检查阿姆斯特朗数并将其插入矩阵。

步骤 4:打印结果。

多种方法

我们提供了不同方法的解决方案。

  • 通过使用矩阵元素的静态初始化

  • 通过使用用户定义方法

让我们逐一查看程序及其输出。

方法 1:通过使用数组元素的静态初始化

在这种方法中,矩阵元素将在程序中初始化。然后按照算法创建一个矩阵并用阿姆斯特朗数填充它。

示例

import java.util.Scanner;
public class Main 
{
   public static void main(String[] args) 
   {
        // 获取矩阵的大小
        Scanner scanner = new Scanner(System.in);
        System.out.print("输入行数:");
        int rows = scanner.nextInt();
        System.out.print("输入列数:");
        int columns = scanner.nextInt();
        // 创建一个方阵
        int[][] matrix = createArmstrongMatrix(rows, columns);
        // 打印结果
        System.out.println("阿姆斯特朗矩阵:");
        displayMatrix(matrix);
   }
   // 创建矩阵并用阿姆斯特朗数填充的函数
   public static int[][] createArmstrongMatrix(int rows, int columns) {
      int[][] matrix = new int[rows][columns];
      int number = 0;
      for (int i = 0; i < rows; i++) {
         for (int j = 0; j < columns; j++) {
            while (!isArmstrongNumber(number)) {
               number++;
            }
            matrix[i][j] = number;
            number++;
         }
      }
      return matrix;
   }
   // 检查数字是否为阿姆斯特朗数的函数
   public static boolean isArmstrongNumber(int number) {
      int originalNumber = number;
      int result = 0;
      int digits = String.valueOf(number).length();

      while (number != 0) {
         int remainder = number % 10;
         result += Math.pow(remainder, digits);
         number /= 10;
      }
      return originalNumber == result;
   }
   // 显示矩阵的函数
   public static void displayMatrix(int[][] matrix) {
      for (int[] row : matrix) {
         for (int element : row) {
            System.out.print(element + " ");
         }
         System.out.println();
      }
   }
}

输出

输入行数:4
输入列数:3
阿姆斯特朗矩阵:
0 1 2
3 4 5
6 7 8
9 153 370

方法 2:使用用户定义方法

在此方法中,矩阵元素将在程序中初始化。然后通过将矩阵作为参数传递并按照算法在方法内部创建矩阵并用阿姆斯特朗数填充来调用用户定义方法。

示例

import java.util.Scanner;
public class Main 
{
   // Main 方法
   public static void main(String[] args) 
   {
      // taking size of the matrix
      Scanner scanner = new Scanner(System.in);
      System.out.print("Enter the number of rows: ");
      int rows = scanner.nextInt();
      System.out.print("Enter the number of columns: ");
      int columns = scanner.nextInt();
      // 调用用户定义的方法
      func(rows, columns);    
   }
   // 用户定义方法
   public static void func(int rows, int columns)
   {
      // create a square matrix
      int[][] matrix = createArmstrongMatrix(rows, columns);
      // 打印结果
      System.out.println("Armstrong Matrix:");
      displayMatrix(matrix);
   }
   // 创建矩阵并用阿姆斯特朗数填充的函数
   public static int[][] createArmstrongMatrix(int rows, int columns) {
      int[][] matrix = new int[rows][columns];
      int number = 0;
      for (int i = 0; i < rows; i++) {
         for (int j = 0; j < columns; j++) {
            while (!isArmstrongNumber(number)) {
               number++;
            }
            matrix[i][j] = number;
            number++;
         }
      }
      return matrix;
   }
   // 检查数字是否为阿姆斯特朗数的函数
   public static boolean isArmstrongNumber(int number) {
      int originalNumber = number;
      int result = 0;
      int digits = String.valueOf(number).length();
      while (number != 0) {
         int remainder = number % 10;
         result += Math.pow(remainder, digits);
         number /= 10;
      }
      return originalNumber == result;
   }
   // 显示矩阵的函数
   public static void displayMatrix(int[][] matrix) {
      for (int[] row : matrix) {
         for (int element : row) {
            System.out.print(element + " ");
         }
         System.out.println();
      }
   }
}

输出

输入行数:4
输入列数:4
阿姆斯特朗矩阵:
0 1 2 3
4 5 6 7
8 9 153 370
371 407 1634 8208

在本文中,我们探讨了如何使用 Java 编程语言创建矩阵并用阿姆斯特朗数填充该矩阵。


相关文章