не получается вернуть метод

217
03 марта 2019, 04:50

Не получается вернуть метод. В чем ошибка?

Если нужно, вот задача:

Даны два числа - n и m. Создайте двумерный массив A[n][m], заполните его таблицей умножения A[i][j]=i*j и выведите на экран. При этом нельзя использовать вложенные циклы, все заполнение массива должно производиться одним циклом.

Входные данные
Программа получает на вход два числа n и m – количество строк и столбцов, соответственно.

Выходные данные
Программа должна вывести полученный массив. Под каждое число отводите четыре знакоместа. Например, число 8 должно быть напечатано с тремя пробелами перед ним.

import java.util.Scanner;
public class MyProgram {
    public static int line(int i, int j, int a[][]) {
        int [] [] A = new int [n] [m];
        for (j = 0; j < A[i][j].length; j++) {
            A[i][j] = i * j;
        }
        return A[][];
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), m = in.nextInt();
        int a[][] = new int[n][m];
        int j = 0;
        for (int i = 0; i < a.length; i++) {
            line(i, j, a[][]);
        }
        for (int i = 0; i < a.length; i++) {
            for (int k = 0; k < a[i].length; k++) {
                System.out.println(a[i][k]);
            }
        }
    }
}
Answer 1
import java.util.Scanner;
public class Main {
    public static void line(int k, int a[][], int n) {
        for (int i = 0; i < n; i++) {
            a[i][k] = i * k;
        }
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), m = in.nextInt();
        int a[][] = new int[n][m];
        for (int i = 0; i < m; i++) {
            line(i, a,n);
        }
        for (int i = 0; i < a.length; i++) {
            for (int k = 0; k < a[i].length; k++) {
                System.out.println(a[i][k]);
            }
        }
    }
}
Answer 2

вы хотите вернуть из метода массив. поэтому надо объявить в начале метода, что вы хотите вернуть, а вернуть только переменную. (наверное объяснил непонятно, поэтом ловите кусок вашего кода)

p.s. код не смотрел, просто ответил на сам вопрос "почему не возвращается массив из метода"

   public static int [][] line(int i, int j, int a[][]) {
        int [] [] A = new int [n] [m];
        for (j = 0; j < A[i][j].length; j++) {
            A[i][j] = i * j;
        }
        return A;
    }
Answer 3
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        // введем наши N, M и создадим матрицу по ним
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int [][]A = new int [n][m];
        // объявим наши индексы
        int i = 0;
        int j = 0;
        // вместо классик вложенных for{for{...}} будем использовать do-while, где будем сами проgисывать действия циклов for
        do{
            A[i][j] = i*j; // умножаем и записываем число
            // теперь займемся условием по "4 знак-место"
            int space = 4; // у нас есть 4 места, куда мы можем разместить наше число
            double a = A[i][j]; // копия нашего числа. через него будем узнавать, сколько пробелов надо
            do{
                a /= 10; // делим наше число на 10
                space--; // у уменьшаем кол-во нужных пробелов
            }while (a>=1); // пока наше число не будет <1
            probel(space); // вызываем метод, который поставит нужное кол-во пробелов
            System.out.print(A[i][j]); // наконец записываем само число
            j++; // увеличим индекс на 1
            if (j>=m){ // сделаем проверку "мы вышли за пределы матрицы?", и если ответ ДА
                j=0; // обнулим этот индекс
                i++; // а этот увеличим
                System.out.println("\n"); // ну и начнем дальше с новой сстроки. у нас же "таблица"
            }
        }while (i<n); // и все это мы делаем пока 0<=i<n
        }
        // метод для пробелов. использовал точки, чтобы удобно было считать
        public static void probel(int space){ // передаем в метод наше кол-во пробелов
        for (int i=0; i<space; i++){ // делаем цикл на кол-во пробелов
            System.out.print("."); // и вписываем пробел
        }
        }
    }
READ ALSO
Вертикальное выравнивание TextInputEditText в TextInputLayout Material Design

Вертикальное выравнивание TextInputEditText в TextInputLayout Material Design

В material design описано все красиво и работает по картинкам все красиво, только на практике немного иначе работаетTextInputEditText находится внизу, а не по центру...

244
Java ошибка в алгоритме с коллекцией Set

Java ошибка в алгоритме с коллекцией Set

Решал задачу на codeforcesРешил двумя способами, один работает, второй нет

195
Как разделить число в цифры в java

Как разделить число в цифры в java

Сам вопрос: к примеру если ввести число 1276 То должно вывести число 1, 2, 7, 6, и вводное число должно быть любых размеров

287
Ошибка в библиотке - java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/format/DateTimeFormatter

Ошибка в библиотке - java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/format/DateTimeFormatter

Пытаюсь использовать библиотеку "GeoDB Java SDK"При запуске на эмуляторе с API 23 приложение вылетает

264