我需要在我的 Transpose Java 程序中使用 double() 并使用扫描仪

I need to use double() in my Transpose Java program and use scanner as well

我正在尝试编写一个程序,首先输入转置大小 (n X n),然后输入矩阵元素,但我需要元素为双精度而不是整数,并且我不断收到错误消息(我应该将 double 替换为 int)。 请问我该如何解决?我是 Java 的新手。 非常感谢 这是我的代码:

import java.util.Scanner;
public class transpose_test {
    public static void main(String args[]) {
        int tra_size;
        Scanner sc=new Scanner(System.in);
        System.out.print("What size does the transpose have (n X n): ");
        tra_size=sc.nextInt();
        int a[][]=new int[tra_size][tra_size];
        System.out.println("Input the elements of matrix (a):");
        for(double i=0; i<tra_size; i++) {
            for(double j=0; j<tra_size; j++) {
                System.out.print("a [" + (i) + "],[" + (j) + "] = ");
                a[i][j] = sc.nextDouble(); // Keeps telling me to chanege the double into int
            }
        }
        System.out.println("Matrix a:");
        for(double i=0; i<tra_size; i++){
            for(double j=0; j<tra_size; j++){
                System.out.print(a[i][j] + "\t");
            }
            System.out.print("\n");
        }
        System.out.println("The Transpose Matrix is");
        for(double i=0; i<tra_size; i++){
            for(double j=0; j<tra_size; j++){
                System.out.print(a[j][i] + "\t");
            }
            System.out.print("\n");
        }
    }
}

对于 for 循环,您正在检查从 0 到矩阵大小。那应该是 int 。问题是您的 2d array 类型。如果你想要 double 数据类型的元素,那么你需要将数组声明为 double.

 double a [][]=new double [tra_size][tra_size]

试试这个代码。这将解决你的问题

    int tra_size;
    Scanner sc=new Scanner(System.in);
    System.out.print("What size does the transpose have (n X n): ");
    tra_size=sc.nextInt();
    double a [][]=new double [tra_size][tra_size];
    System.out.println("Input the elements of matrix (a):");
    for(int i=0; i<tra_size; i++) {
        for(int j=0; j<tra_size; j++) {
            System.out.print("a [" + (i) + "],[" + (j) + "] = ");
            a[i][j] = sc.nextDouble(); // Keeps telling me to chanege the double into int
        }
    }
    System.out.println("Matrix a:");
    for(int i=0; i<tra_size; i++){
        for(int j=0; j<tra_size; j++){
            System.out.print(a[i][j] + "\t");
        }
        System.out.print("\n");
    }
    System.out.println("The Transpose Matrix is");
    for(int i=0; i<tra_size; i++){
        for(int j=0; j<tra_size; j++){
            System.out.print(a[j][i] + "\t");
        }
        System.out.print("\n");
    }

认为我看到了混乱,数组的索引不应该是double(它们应该是 int)。数组 a 的元素应该是 doubledouble[][] 而不是 int[][])。喜欢,

Scanner sc = new Scanner(System.in);
System.out.print("What size does the transpose have (n X n): ");
int tra_size = sc.nextInt();
double[][] a = new double[tra_size][tra_size];
System.out.println("Input the elements of matrix (a):");
for (int i = 0; i < tra_size; i++) {
    for (int j = 0; j < tra_size; j++) {
        System.out.printf("a [%d],[%d] = ", i, j);
        a[i][j] = sc.nextDouble();
    }
}
System.out.println("Matrix a: ");
for (int i = 0; i < tra_size; i++) {
    for (int j = 0; j < tra_size; j++) {
        System.out.print(a[i][j] + "\t");
    }
    System.out.println();
}
System.out.println("The Transpose Matrix is");
for (int i = 0; i < tra_size; i++) {
    for (int j = 0; j < tra_size; j++) {
        System.out.print(a[j][i] + "\t");
    }
    System.out.println();
}

有两点需要明确:

  1. 数组的索引不是双精度的。它们是整数。因此,在遍历数组时,使用 int i 而不是 double i.

  2. 您正在存储双精度作为输入,因此您的二维数组应该是 double 类型而不是 int

格式化代码如下:

Scanner sc = new Scanner(System.in);
System.out.print("What size does the transpose have (n X n): ");
int tra_size = sc.nextInt();

//changed from int to double
double[][] a = new double[tra_size][tra_size];
System.out.println("Input the elements of matrix (a):");

//int instead of double
for (int i = 0; i < tra_size; i++) {
    for (int j = 0; j < tra_size; j++) {
        System.out.printf("a [%d],[%d] = ", i, j);
        a[i][j] = sc.nextDouble();
    }
}
System.out.println("Matrix a: ");

//int instead of double
for (int i = 0; i < tra_size; i++) {
    for (int j = 0; j < tra_size; j++) {
        System.out.print(a[i][j] + "\t");
    }
    System.out.println();
}
System.out.println("The Transpose Matrix is");

//int instead of double
for (int i = 0; i < tra_size; i++) {
    for (int j = 0; j < tra_size; j++) {
        System.out.print(a[j][i] + "\t");
    }
    System.out.println();
}