Я начинаю свой опыт программирования на Java и пытаюсь написать программу для оформления покупок с использованием массивов и методов

#java #arrays #methods

Вопрос:

Как передать массивы в качестве параметров, а затем вернуть массивы из пользовательских методов в основной метод. Вот часть моего кода. public static void main(строка[] args) { размер int, i=0, ch;

     //Initializing scanner declaring arrays
    Scanner scan= new Scanner (System.in); 
    int quantity[]=new int[3];
    String name[]=new String[3];
    double price[]=new double [3];

    //do while loop to continue entering items until quantity is 0
    do
    {

        System.out.println("Enter quantity of item, "   "name of item, "   " and price of item, " );
        quantity[i]= scan.nextInt();
        name[i]=scan.next();
        price[i]=scan.nextDouble();
        i  ;
    }while(quantity[i]==0);


    //menu for grocery list operations using switch block
    System.out.println("1) Add item(s)/n"
              "2) Remove item(s)/n"
              "3) view cart/n "
              "4) Checkout/n "
              "5) Exit/n");
    ch=scan.nextInt();
    switch(ch) 
    {
    case 1: 


        add(quantity[i-1],name[i-1],price[i-1]);
        break;
 

И вот метод добавления

 //method to add item
public static  void add(int q,String  n,double p )

{
    Scanner scan= new Scanner (System.in);
    System.out.println("Enter quantity of item, "   "name of item, "   " and price of item, " );
    q=scan.nextInt();
    n= scan.next();
    p=scan.nextDouble(); 
    scan.close();


}
 

Комментарии:

1. Не используйте массивы, они ужасны. Используйте коллекцию, например List

2. Почему вы думаете, что массивы ужасны?

Ответ №1:

Вместо передачи массивов вы можете запустить ОПЕРАТОР SWITCH внутри ЦИКЛА FOR до длины массива.

Комментарии:

1. Отличная Идея! Спасибо

Ответ №2:

Передача массивов в качестве параметров и возврат массивов в java просты.

Вот пример:

 public static int[] foo(int[] a){
    // Do something with a
    int[] b = {0,1,2};
    return b;
}
 

Но также имейте в виду, что Java передается по значению, но когда вы передаете массив в качестве параметра, он передает ссылку (он же адрес памяти) в качестве значения функции.

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

Пример:

 public static void main(String... args){
    int b = 5;
    foo1(b);
    // b is still 5


    int[] c = {1,2};
    foo2(c);
    // c is now {1,10} 
}

public static void foo1(int x){
    x = 10;
}

public static void foo2(int[] x){
    x[1] = 10;
}
 

Комментарии:

1. Идеально! Спасибо за разъяснение

2. Нет проблем! Если вы чувствуете, что ответ хороший, не стесняйтесь отметить его как принятый.