如何正确调用main方法中的其他方法

时间:2016-04-05 15:53:10

标签: java

我无法在main方法上调用方法。这是我在main方法中需要的东西:

打印横幅消息

获取产品ArrayList

从用户处获取产品订单并检查产品是否存在于产品

的ArrayList

如果产品存在

获取产品价格

计算产品税

计算总销售额

输出总销售额

否则

输出“未找到产品。”

import java.util.ArrayList;
import java.util.Scanner;

public class Unit6ProblemSet {


public static void main(String[] args) {

    bannerPrinter();
    ArrayList<String> products = productBuilder();
    Boolean productExists = getOrder(products);
    if(productExists) {
        double price = getPrice();
        getTax(tax);
        getTotal(saleTotal);
        printTotal(saleTotal);
    }
    else {
        System.out.println("Product not found.");
    }    
}

public static void bannerPrinter() {

    System.out.println("******************************************");
    System.out.println("****** Welcome to my eCommerce app! ******");
    System.out.println("******************************************");
    System.out.println();
}

public static ArrayList<String> productBuilder() {

    ArrayList<String> products = new ArrayList<String>();

    products.add("Headphones");
    products.add("Pencils");
    products.add("Pens");
    products.add("Computers");
    products.add("Videogames");

    return products;
}

public static boolean getOrder(ArrayList<String> products) {

    Scanner scnr = new Scanner(System.in);

    String userStr = "";

    System.out.println("Enter a product: ");
    userStr = scnr.nextLine();

    boolean productName = products.contains(userStr);

    if (productName) {
        System.out.println("True");
    }
    else {
        System.out.println("False");
    }

    return productName;
}

public static double getPrice() {

    double price = 0.0;
    price = (Math.random() + 1) * 100;

    return price;
}

public static double getTax(double price) {

    double tax = 0.0;
    tax = price * 0.10;

    return tax;
}

public static double getTotal(double price, double tax) {

    double saleTotal = 0.0;
    saleTotal = price + tax;

   return saleTotal;
}

public static void printTotal(double saleTotal) {

    System.out.println("Your sale total is: " + saleTotal);
}

}

我在调用main中的不同方法时遇到了麻烦。

2 个答案:

答案 0 :(得分:0)

你走在正确的道路上。

bannerPrinter();
ArrayList<String> products = productBuilder();

主方法的第一行bannerPrinter()调用您的bannerPrinter方法。

现在,对于productBuilder()的第二次通话,您基本上会得到一个结果。现在使用该结果,您可以查看该产品是否存在,获得产品价格等。

因此,如果你想从main调用一个方法,你只需要使用方法名来进行调用。

对于具有getOrder(ArrayList<String> products)之类参数的方法,您必须将参数传递给方法。

在您的示例中,它将是getOrder(products)。将使用正确的参数调用该方法并获得boolean结果。

同样基于您最近的编辑,当您调用具有返回类型的方法时,例如getOrder(),您需要有一个获得结果的变量。

productBuilder()返回List<String>,所以你做了这个

ArrayList<String> products = productBuilder();基本上说,获取我的产品并将其存储在products的数组列表中,以便我可以使用它。

你的其他吸气者正在做类似的事情。您需要存储结果,然后使用它来调用其他方法。

我建议您对Java进行一些阅读,因为这是一个基本问题。如果这是Java 101类的类赋值,请重新阅读第一个代码章节,以便更好地理解方法和类如何相互调用。

答案 1 :(得分:0)

您的getOrder方法

可能存在问题
    public static boolean getOrder(ArrayList<String> products) {

        Scanner scnr = new Scanner(System.in);

        String userStr = "";


        System.out.println("Enter a product: ");
        userStr = scnr.nextLine();

        //Move this after scanning user input
        boolean productName = products.contains(userStr); 

        if (productName) {
            System.out.println("True");
        }
        else {
            System.out.println("False");
        }

        return productName;
    }

在main方法中,通过传递所需的参数并将其返回结果保存在变量中来继续调用所需的方法

    public static void main(String[] args) {

        bannerPrinter();
        ArrayList<String> products = productBuilder();
        Boolean productExists= getOrder(products); //getOrder needs arraylist and return boolean

        //then check if the returned result is true i.e if product exists
        if(productExists){
        double price = getPrice();

         //do other stuff, calcualte tax on price and then get total and etx
        }
        else{
        //Print "product not found"
        }


    }