Мне нужно использовать double () в моей программе Transpose Java, а также использовать сканер - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь написать программу, которая сначала принимает размер транспонирования (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");
        }
    }
}

Ответы [ 3 ]

1 голос
/ 28 апреля 2020

Вам необходимо уяснить две вещи:

  1. Индексы вашего массива НЕ являются двойными. Они целые числа. Поэтому при обходе массивов используйте int i вместо double i.

  2. В качестве входных данных вы сохраняете double, поэтому ваш 2D-массив должен иметь тип 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();
}
0 голосов
/ 28 апреля 2020

I думаю Я вижу путаницу, индексы массивов не должны быть double (они должны быть int). Элементы массива a должны быть double (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();
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();
}
0 голосов
/ 28 апреля 2020

Для циклов for вы проверяете от 0 до размера матрицы. Это должно быть int. Проблема в вашем типе двумерного массива. Если вам нужны элементы типа данных 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");
    }
...