如何实现一个将文件加载到我的程序中的类,其他类可以使用?

时间:2015-04-15 02:38:39

标签: java sorting command-line bufferedreader

好的,所以我正在建立一个程序,用于对学生的成绩和记录进行排序。它是一个命令行程序,运行时首先要求用户输入。有几个命令,如退出(退出程序),加载[文件名](加载文件名),学生[学生姓名](加载学生记录)等,其他命令并不重要。基本上我想知道的是什么以及我坚持的是所有这些函数都将在不同的类中,并且在用户输入特定命令时将被调用,但是如果我将" load"在自己的类中命令,然后如何让它与其他类共享其信息?我知道我必须使用BufferReader来读取文件,但是我将如何实现我的加载类,或者如果有更好的方法可以自由地说出来。到目前为止,这是我的代码。我的其他课程并不多,因为我觉得我需要弄清楚如何阅读并首先与其他课程共享文件。

import java.util.*;
import java.io.*;
public class program7
{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Grade Stats by ");
        System.out.print(">");
        while(scan.hasNextLine())
        {

            String input = scan.nextLine();

            if(input.equals("exit"))
            {
                System.exit(0);
            }
            else if(input.equals("help"))
            {
                System.out.println("exit                   - program closes.");
                System.out.println("load [filename]        - loads a class database specified in [filename].");
                System.out.println("students               - prints out a list of students from the class, along ");
                System.out.println("                         with total points, and final grades for each student.");
                System.out.println("assignments            - prints out a list of assignments from the file, along with points possible");
                System.out.println("student [student name] - Prints report for the student");
                System.out.print(">");
            }
            else if(input.contains("load"))
            {
                String[] split = input.split(" ");
                Load load = new Load(split[1]);
                System.out.print(">");
            }
            else if(input.equals("students"))
            {

                System.out.print(">");
            }
            else if(input.equals("assignments"))
            {

                System.out.print(">");
            }
            else if(input.contains("student"))
            {
                String[] split = input.split(" ");
                Student student = new Student(split[1]);
                System.out.print(">");
            }
            else if(input.contains("assignment")
            {

            }
            else if(input.equals("grades")
            {

            }
            else
            {
                System.out.println("exit                   - program closes.");
                System.out.println("load [filename]        - loads a class database specified in [filename].");
                System.out.println("students               - prints out a list of students from the class, along ");
                System.out.println("                         with total points, and final grades for each student.");
                System.out.println("assignments            - prints out a list of assignments from the file, along with points possible");
                System.out.println("student [student name] - Prints report for the student");
                System.out.print(">");
            }
        }
    }

}

这是我的主要类,到目前为止是函数类。

public class Load
{
    public Load()
    {
        BufferReader in = new BufferReader
    }

}




public class Student
{
    public Student()
    {

    }

}


import java.util.*;
import java.io.*;
public class Student
{

    private String student;
    public Student(inputFile
    public Student(String student)
    {
        this.student = student;
    }

    public String Splitter()
    {

    }
    public String Printer()
    {

    }

}

1 个答案:

答案 0 :(得分:0)

  

基本上我想知道的是什么以及我坚持的是所有这些函数将在不同的类中,并在用户输入特定命令时被调用,

     

但如果我把#34;加载"在自己的类中命令,然后如何让它与其他类共享其信息?

如果您的Load类具有公共getter方法,那么您可以通过这种方式检索它。

例如,使用Load类中的方法

public String getFileContents() {
/* your BufferedFileReader and operations here */
    return s;
}

您可以通过

在主类中创建Load对象来访问它
Load load = new Load();
String s = load.getFileContents();

这样你就可以在你的main program7类中创建一个String,并从你的Load类中提取数据。

我希望这有帮助并回答了你的问题。

  

我是否可以使用Load对象在我的其他类中访问它?我的其他类需要一些信息,因为它们以不同的方式处理它。例如,我的学生上课,打印出学生和他们的成绩,而学生班将根据用户的指定打印出某个学生

所以你的学生班可能有一个方法,比如

public void printGrades(String fileContents) {
    /* do stuff */
    System.out.println("Grades");
}

然后通过

从主程序7类中调用它
Student student = new Student();
student.printGrades(s); // s is the String from load.getFileContents(); up above.

因此,您通过每个类中的这些公共方法将文件内容从Load类传递给Student类。