调用类文件及其方法

时间:2014-02-10 20:12:39

标签: java class methods instantiation

这是我当前的代码在SalesManager客户端应用程序中,我想提示用户输入文件名。然后nstantiate SalesAnalyzer对象并调用上面的所有方法,输出每个方法的结果。

如何调用SalesAnaylzer及其所有方法?

销售经理:

import java.io.File;
import java.text.DecimalFormat;
import java.util.Scanner;
import java.io.IOException;;

public class SalesManager
{
    public static void main( String []args) throws IOException
    {
        System.out.println(" What is the name of the file");
        Scanner scan= new Scanner(System.in);
        String fileName= scan.next();
    }
}

这是类文件:

import java.io.File;
import java.text.DecimalFormat;
import java.util.Scanner;
import java.io.IOException;
import java.util.*;
import javax.swing.*;
import java.awt.*;

public class SalesAnaylzer {

    DecimalFormat pricePattern = new DecimalFormat("$#0.00");
    int[][] sales = new int[3][4];

    public SalesAnaylzer(String fileName) throws IOException {

        File inputFile = new File(fileName);
        Scanner scan = new Scanner(inputFile);
        for (int row = 0; row < 4; row++) {
            for (int col = 0; col < 6; col++) {
                sales[row][col] = scan.nextInt();
            }
        }
    }

    public String toString() {
        String data = "";
        for (int row = 0; row < 4; row++) {
            data = data + "\nStore " + (row + 1) + ": ";
            for (int col = 0; col < 6; col++) {
                data = data + "QTR " + (col + 1) + ": " + pricePattern.format(sales[row][col]) + " ";
            }
        }
        return data;
    }

    public double totalSales() {
        double total = 0.0;
        for (int row = 0; row < 4; row++) {
            for (int col = 0; col < 6; col++) {
                total = total + sales[row][col];
            }
        }
        return total;
    }

    public double highStoreSales(int store) {
        double highest = 0.0;
        for (int row = 0; row < 4; row++) {
            if (sales[row][store] > highest)
                highest = sales[row][store];
        }
        return highest;
    }

    public double averageStoreSales(int quarter) {
        double total = 0.0;
        double avg = 0.0;
        for (int col = 0; col < 6; col++) {
            total = total + sales[quarter][col];
        }
        avg = (total / 4);
        return avg;
    }
}

2 个答案:

答案 0 :(得分:2)

确保它们位于同一个包中,以便您可以直接调用SalesAnaylzer类的构造函数和方法。然后像创建其他任何对象一样创建一个SalesAnalyzer对象:

SalesAnaylzer sA = new SalesAnaylzer(filename);
System.out.println(sA);
etc...

答案 1 :(得分:1)

首先,让我们假设您在名为“myPackage”的包(文件夹)中保存了这两个类。你应该在每个类中添加的第一件事就是这行代码:

package myPackage;

完成此操作后,您必须在SalesAnalyzer课程中创建SalesManager的新实例,方法与创建新Scanner的方式相同。

Scanner scan = new Scanner(System.in); //Here you created a new Scanner

创建新的SalesAnalyzer

SalesAnalyzer newSA = new SalesAnalyzer();

现在,如果你想访问任何方法,你必须写下你的SalesAnalyzer对象的名称,之后点,然后你想要调用的方法的名称。

/*
* Here you created a new String named fileName and added it value that
* yours "next" method returned. "next" is a method inside Scanner object
* and you called for it by writing "scan.next()".
*/

String fileName = scan.next();

这是Scanner对象中的下一个方法:

public String next() {
    ensureOpen();
    clearCaches();

    while (true) {
        String token = getCompleteTokenInBuffer(null);
        if (token != null) {
            matchValid = true;
            skipped = false;
            return token;
        }
        if (needInput)
            readInput();
        else
            throwFor();
    }
}

现在,假设您要在totalSales内调用SalesAnalyzer方法。这是一个返回double类型值的方法。如果要将该值保存到SalesManager类中的某个变量,则必须创建double类型的变量,然后调用totalSales方法。它应该是这样的:

double totalS = newSA.totalSales();

通过这种方式,您可以从totalSales类访问SalesAnalyzer内的方法SalesManager,并将其返回的值保存到名为totalS的双变量中。希望我向你澄清任何事情并帮助你甚至一点点。如果您有任何进一步的问题,请随时提出。