Dong Jun
Dong Jun

Reputation: 53

Passing arrays between methods and calling them in main

I want to pass an array from one method to another and call that method on the array. However, it shows where increaseCost() is not applicable for arguments. How would I fix this code?

I'm trying to pass double[] price to increaseCost():

import java.util.*;
public class LabQuiz3 {
    public static void main(String[] args) {
        initialize();
        increaseCost();
    }
    static void initialize() {
        String[] name=new String[10];
        System.out.println("Name of the grocery? ");
        Scanner scan=new Scanner(System.in);
        for (int i=0; i < 10; i++) {
            String a = scan.next();
            name[i]=a;
        }
        scan.close();
        double[] price=new double[10];
        System.out.println("Price of each grocery? ");
        Scanner sc=new Scanner(System.in);
        for (int j=0; j < 10; j++) {
            double b=sc.nextDouble();
            price[j]=b;
        }
        sc.close();
    }
    static void increaseCost(double[] price) {
        for (int c=0; c <10; c++) {
            double k=price[c] * .07;
            price[c]=k;
        }
        System.out.println(price);
    }
}

Upvotes: 0

Views: 51

Answers (1)

Nick Vanderhoven
Nick Vanderhoven

Reputation: 3093

In your main method you have to get the prices from the initialize() method:

public static void main(String[] args) {
    double[] prices = initialize();
    increaseCost(prices);
}

And in the initialize method you have to return the prices array:

static double[] initialize() {
   //all your code
   ...
   return price;
}

A few other things to remark:

  • maybe rename your price variable to prices as it is a list of prices
  • you are mixing a lot of concerns (reading, printing, keeping state, etc.), normally you should keep those things separated
  • reading in the names of the groceries and the prices should probably be a seperate concern and reside in an own method, you lose track of the names since you are not returning them in any way
  • the for loop is strangely formatted, normally the full loop goes on one line

There are other things, but it's probably just a lab quiz.

Upvotes: 1

Related Questions