JustinMac Ответов: 1

Как инициализировать массив из другого класса?


Номера Классов:

public class Numbers {
private Float [] numbers;
private int default_size = 10;

public Numbers() {
    ///  write code here to intialize a "default" array since this is the default constructor
    numbers = new Float[default_size];
    for(int i = 0; i < default_size; i++)
    numbers [i] = (float) 0.0;
}

public Numbers (int size) {
    ///  write code here to initialize an "initial" array given the parameter size as this is an initial constructor
    numbers = new Float[size];
}

public void initValuesInArray() {
    /// write code here to intialize the values in the array
    Scanner scan = new Scanner(System.in);
    for (int i = 0; i < numbers.length; i++) {
        System.out.println("Enter Value : ");
        numbers[i] = scan.nextFloat();
    }
}

public String toString() {
    // write code to return the values in the array in a list format - one value per line
    for (int i = 0; i < numbers.length; i++)
    System.out.println(numbers[i]);
    return " ";
}

public float calcAverage() {
    // write code to return the average of the values in the array
    double sum = 0.0;
    for (int i = 0; i < numbers.length; i++)
        sum += numbers[i];
    double average = sum / numbers.length;
    System.out.println(average);
    return (float) average;
}
}

Class Main:

public class Main {
public static void main (String [] args) {

    // write the code here to implement the menu as specified in Lab 1

    boolean menuLoop = true;
    while(true) {
    System.out.println("Enter 1 to initialize a default array");
    System.out.println("Enter 2 to initialize an array of input size");
    System.out.println("Enter 3 fill array with values");
    System.out.println("Enter 4 display values in array");
    System.out.println("Enter 5 to display average of the values in the array");
    System.out.println("6 to quit\n");

    Numbers obj = new Numbers();
    Scanner scan = new Scanner(System.in);
    int i = scan.nextInt();

    switch (i) {

    case 1:
        obj = new Numbers ();
        break;

    case 2:
        System.out.println("Enter the new size of array: ");
        int x = scan.nextInt();
        Numbers [] numbers = new Numbers[x];
        break;

    case 3:
        System.out.println("Enter the float numbers as values in the array: ");
        obj.initValuesInArray();
        break;

    case 4:
        obj.toString();
        break;

    case 5:
        obj.calcAverage();
        break;

    case 6:
        System.exit(0);
        break;
    default :
        System.out.println("Invalid Entry...");
        break;
        }

    } 
}
}

Он должен иметь возможность изменять размер массива на основе пользовательского ввода, а затем пользователь может вводить значения в массив.

Что я уже пробовал:

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

1 Ответов

Рейтинг:
9

Bryian Tan

Я бы порекомендовал несколько изменений

1. в случае 2 повторно инициализируйте объект с помощью Numbers (int size) метод

case 2:
        System.out.println("Enter the new size of array: ");
        int x = scan.nextInt();
        obj = new Numbers(x);
        break;

2. двигаться Numbers obj = new Numbers(); за пределами города while цикл, чтобы предотвратить его перезапись каждый раз, когда пользователь делает выбор

3. Вам также нужно обновить ночь Numbers (int size) способ, чтобы включить код, чтобы инициализировать массив

Пример: Компилятор Онлайн Java - Редактор Онлайн Java - Кода Java Онлайн - Онлайн Java Бегун[^] - обязательно используйте интерактивный режим для запуска примера.


JustinMac

Это сработало!!! Спасибо