#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. Нет проблем! Если вы чувствуете, что ответ хороший, не стесняйтесь отметить его как принятый.