Лучший способ добавить элемент ввода ввода (scanf) в функцию Java возвращает массив - PullRequest
0 голосов
/ 17 сентября 2018

Я просто хочу добавить простое, где я могу добавить часть строки ввода пользователем вместо жесткого кода, определяющего массив. Поэтому я могу просто ввести номер пары как часть массива.

Вот мой оригинальный код:

public class Test {
     public static void main(String[] args)  {
         System.out.println("Largest in given array is " + max());
        }
     static int array[] = {10, 324, 45, 90, 9808};

     // Method to find maximum in arr[]
     public static int max() {
         int i;
         // Initialize maximum element
         int max = array[0];

         // Traverse array elements from second and
         // compare every element with current max  
         for (i = 1; i < array.length; i++)
             if (array[i] > max)
                 max = array[i];
         return max;
     }
}

Моя логика такова, скажи мне, прав я или нет

Мне нужно добавить импорт java.util.Scanner; и затем введите вход сканера = новый сканер (System.in);

Но следующая часть смущает меня, я должен изменить max () на строку?

import java.util.Scanner;
public class Test {
     public static void main(String[] args)  {
         System.out.println("Largest in given array is " + max(int[] array));
        }
     Scanner input = new Scanner(System.in);
     static int array[] = {10, 324, 45, 90, 9808};

     // Method to find maximum in arr[]
     public static int max(int[] array) {
         int x;
         // Initialize maximum element
         int max = array[0];

         // Traverse array elements from second and
         // compare every element with current max  
         for (x = 1; x < array.length; x++)
             if (array[x] > max)
                 max = array[x];
         return max;
     }
}

1 Ответ

0 голосов
/ 17 сентября 2018

Я бы порекомендовал пересмотреть ваш общий дизайн перед добавлением пользовательского ввода. Использование переменной глобального массива не нужно и произвольно ограничивает способность функции max выполнять работу с чем-либо, кроме жестко запрограммированного глобального array. max должен принимать массив параметров для работы; это позволяет использовать повторно.

Логика вашей max функции выглядит точной, но она приведет к падению программы на пустых входных массивах.

При обработке пользовательского ввода вы можете захотеть реагировать на переменные размеры. Для этого проще всего использовать ArrayList.

Я также рекомендую инициализировать счетчики циклов, такие как i в области видимости цикла.

Вот возможное переписывание на пути к динамическим массивам, которые вы можете использовать:

import java.util.*;

class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int arr[] = new int[8];

        for (int i = 0; i < arr.length; i++) {
            System.out.print("Enter an integer: ");
            arr[i] = in.nextInt();
        }

        System.out.println("Largest in given array is " + max(arr));
    }

    public static int max(int arr[]) {
        if (arr.length == 0) {
            return -1;
        }

        int max = arr[0];

        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }

        return max;
    }
}

Выход:

Enter an integer:  1
Enter an integer:  2
Enter an integer:  3
Enter an integer:  6
Enter an integer:  5
Enter an integer:  3
Enter an integer:  4
Enter an integer:  1
Largest in given array is 6

И repl для тестирования.

...