0

我正在做一个项目,我必须构建一个可以从文件加载课程的课程组织者。我在将文件加载到程序中并将文件中的信息放入数组时遇到了一些麻烦。文件中的信息只是课程信息,也可以在程序本身中输入。我的希望是必须编程能够在同一个文件中读取和写入信息。关于我做错了什么的任何提示?我对用java读/写不是很有经验。非常感谢任何帮助。

以下是我收到的错误:

 C:\java\bin>javac CourseOrganizer.java
CourseOrganizer.java:248: missing method body, or declare abstract
    private static void LoadCourses();
                        ^
CourseOrganizer.java:253: cannot resolve symbol
symbol  : class ListCourses
location: class CourseOrganizer
                ListCourses lines = new ArrayList(ListCourses);
                ^
2 errors

这是代码:

    import java.io.*;
import java.util.*;

public class CourseOrganizer
{
    static ArrayList ListCourses = new ArrayList();
    public static void main(String[] args)
    {
        InputStreamReader inp = null;
        BufferedReader input = null;
        int nOption  = 0;
        try
        {
            inp = new InputStreamReader(System.in);
            input = new BufferedReader(inp);
            while(true)
            {
                System.out.println("1. Add Courses");
                System.out.println("2. Modify Courses");
                System.out.println("3. Delete Courses");
                System.out.println("4. Sort Courses");
                System.out.println("5. Show all Courses");
                System.out.println("6. Load Courses");
                System.out.println("7. Exit.");
                System.out.println("\nChoose an option(1-6) >> ");
                nOption = Integer.parseInt(input.readLine());

                switch(nOption)
                {
                    case 1:
                        AddCourses(input);
                        break;
                    case 2:
                        ModifyCourses(input);
                        break;
                    case 3:
                        DeleteCourses(input);
                        break;
                    case 4:
                        SortCourses(input);
                        break;
                    case 5:
                        ShowAllCourses();
                        break;
                    case 6:
                        System.out.println("Exiting program. Press any key to continue....");
                        input.read();
                        System.exit(0);
                        break;
                }
            }
        }
        catch(Exception exp)
        {
        }
    }
    //Setup Add Courses function for case 1
    private static void AddCourses(BufferedReader input) throws IOException
    {
        CourseTemplate tmpObject = null;
        while(true)
        {
            tmpObject = new CourseTemplate();
            System.out.println("Course Name >> ");
            tmpObject.CourseName = input.readLine().toString();
            System.out.println("Day of Course "+tmpObject.CourseName+"(1...6) >> ");
            tmpObject.Day = input.readLine().toString();
            System.out.println("Time of Course Start "+tmpObject.CourseName+" (in HH:MM AM/PM format)  >> ");
            tmpObject.Time = input.readLine().toString();
            System.out.println("Course Mark "+tmpObject.CourseName+"(0...100) >>");
            tmpObject.Mark = input.readLine().toString();
            if(tmpObject != null)
                ListCourses.add(tmpObject);

            System.out.println("\n Do you want to add another Course?(y/n) >>");            
            if(!input.readLine().toLowerCase().equals("y"))
                break;
        }
    }

    private static void ModifyCourses(BufferedReader input) throws IOException
    {
         CourseTemplate tmpObject = null;
         System.out.println("Name of the Course to modify >> ");
         String OldCourseName = input.readLine();
         int index = getCourseIndexByName(OldCourseName);
         if(index == -1)
         {
             System.out.println(" Course " + OldCourseName+ " not found.");
         }
         else
         {
             tmpObject = (CourseTemplate)ListCourses.get(index);
             showCourse(tmpObject);
             System.out.println("What you want to modify (Name|Day|Time|Mark)? >>");
             String strOption = input.readLine();
             if("name".equals(strOption.toLowerCase()))
             {
                System.out.println("New Name of the Course >> ");
                tmpObject.CourseName = input.readLine().toString();
             }
             else  if("day".equals(strOption.toLowerCase()))
             {
                System.out.println("New Day of the Course "+tmpObject.CourseName+"(1...6) >> ");
                tmpObject.Day = input.readLine().toString();
             }
             else  if("mark".equals(strOption.toLowerCase()))
             {
                System.out.println("New Mark of the Course "+tmpObject.CourseName+"(0...100) >> ");
                tmpObject.Day = input.readLine().toString();
             }
             else if("time".equals(strOption.toLowerCase()))
             {
                System.out.println("New Time of the Course "+tmpObject.CourseName+" (in HH:MM AM/PM format)  >> ");
                tmpObject.Time = input.readLine().toString();
             }
             else
             {
                 System.out.println("Unable to locate the propety entered..");
             }

             ListCourses.set(index, tmpObject);
         }
    }

    private static int getCourseIndexByName(String Name)
    {
        int index = -1;
        CourseTemplate tmp =null;
        for(int i=0;i<ListCourses.size();i++)
        {
            tmp = (CourseTemplate)ListCourses.get(i);
            if(tmp.CourseName.toLowerCase().equals(Name.toLowerCase()))
            {    
                index = i;
                break;
            }
        }
        return index;
    }

    private static void showCourse(CourseTemplate tcourse)
    {
        System.out.println(tcourse.CourseName+"\t\t"+tcourse.Day+"\t"+tcourse.Time+"\t"+tcourse.Mark);
    }

    private static void DeleteCourses(BufferedReader input) throws IOException
    {
         System.out.println("Name of the Course to delete >> ");
         String OldCourseName = input.readLine();
         int index = getCourseIndexByName(OldCourseName);
         if(index == -1)
         {
             System.out.println(" Course " + OldCourseName+ " not found.");
         }
         else
         {
             ListCourses.remove(index);
             System.out.println(" Course " + OldCourseName+ "deleted successfully.");
         }
    }

    private static void SortCourses(BufferedReader input) throws IOException
    {
         System.out.println("Enter the key to sort (Name|Day|Time|Mark)? >>");
         String strOption = input.readLine();
         int nSize = ListCourses.size();
         String str1, str2;
         if("name".equals(strOption.toLowerCase()))
         {
             for(int i = 0;i<nSize;i++)
             {
                 for(int j = (i+1);j<nSize;j++)
                 {
                     str1 = ((CourseTemplate)ListCourses.get(i)).CourseName;
                     str2 = ((CourseTemplate)ListCourses.get(j)).CourseName;

                     if(str1.compareToIgnoreCase(str2) > 0)
                     {
                         CourseTemplate  tmp = (CourseTemplate) ListCourses.get(i);
                         ListCourses.set(i, (CourseTemplate) ListCourses.get(j));
                         ListCourses.set(j, tmp);
                     }
                 }
             }
         }
         else  if("day".equals(strOption.toLowerCase()))
         {
             for(int i = 0;i<nSize;i++)
             {
                 for(int j = (i+1);j<nSize;j++)
                 {
                     str1 = ((CourseTemplate)ListCourses.get(i)).Day;
                     str2 = ((CourseTemplate)ListCourses.get(j)).Day;

                     if(str1.compareToIgnoreCase(str2) > 0)
                     {   
                         CourseTemplate  tmp = (CourseTemplate) ListCourses.get(i);
                         ListCourses.set(i, (CourseTemplate) ListCourses.get(j));
                         ListCourses.set(j, tmp);
                     }
                 }
             }
         }
         else if("time".equals(strOption.toLowerCase()))
         {
             for(int i = 0;i<nSize;i++)
             {
                 for(int j = (i+1);j<nSize;j++)
                 {
                     str1 = ((CourseTemplate)ListCourses.get(i)).Time;
                     str2 = ((CourseTemplate)ListCourses.get(j)).Time;

                     if(str1.compareToIgnoreCase(str2) > 0)
                     {
                         CourseTemplate  tmp = (CourseTemplate) ListCourses.get(i);
                         ListCourses.set(i, (CourseTemplate) ListCourses.get(j));
                         ListCourses.set(j, tmp);
                     }
                 }
             }
         }
         else if("mark".equals(strOption.toLowerCase()))
         {
             for(int i = 0;i<nSize;i++)
             {
                 for(int j = (i+1);j<nSize;j++)
                 {
                     str1 = ((CourseTemplate)ListCourses.get(i)).Mark;
                     str2 = ((CourseTemplate)ListCourses.get(j)).Mark;

                     if(str1.compareToIgnoreCase(str2) > 0)
                     {
                         CourseTemplate  tmp = (CourseTemplate) ListCourses.get(i);
                         ListCourses.set(i, (CourseTemplate) ListCourses.get(j));
                         ListCourses.set(j, tmp);
                     }
                 }
             }
         }
         else
         {
             System.out.println("Unable to locate the text entered..");
         }
         ShowAllCourses();
    }

    private static void LoadCourses();

        public String[] readLines(String filename) throws IOException {
            FileReader fileReader = new FileReader("Courses.txt");
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            ListCourses lines = new ArrayList();
            String line = null;
            while ((line = bufferedReader.readLine()) != null) {
                    lines.add(line);
            }
            bufferedReader.close();
            return lines.toArray(new String[lines.size()]);
        }

    private static void ShowAllCourses()
    {
         System.out.println("Course List\n");
         System.out.println("Name\t\tDay\tTime\tMark");
         for(int i=0;i<ListCourses.size();i++)
         {

             showCourse((CourseTemplate)ListCourses.get(i));
         }
    }
}
class CourseTemplate
{
    public String CourseName = "";
    public String Day = "";
    public String Time="";
    public String Mark="";
}
4

2 回答 2

0

嘿朋友,我没有看到你将列表中的课程信息保存到磁盘,你从不使用 OutPutStream 或 BufferedWriter,所以没有文本文件,你如何通过 FileReader 读取 Courses.txt?(你应该创建并将其保存在第一个)...其次,我看到,在 switch 结构中,“案例 6”与供用户选择的屏幕消息不同,是吗?

于 2013-02-01T02:04:40.343 回答
0

你已经声明

static ArrayList ListCourses = new ArrayList();

所以ListCources实际上是您的ArrayList对象的名称。
现在在您的readLines方法中,您有:

ListCourses lines = new ArrayList();

这是没有意义的,因为ListCources是变量名而不是对象类型。为了更正此问题,必须将上述行更改为:

ArrayList lines = new ArrayList();

因此,您的方法将如下所示:

public String[] readLines(String filename) throws IOException {
            FileReader fileReader = new FileReader("Courses.txt");
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            ArrayList lines = new ArrayList();
            String line = null;
            while ((line = bufferedReader.readLine()) != null) {
                    lines.add(line);
            }
            bufferedReader.close();
            return lines.toArray(new String[lines.size()]);
        }

我可以建议用特定类型声明您的ArrayList 。这将有助于编译器查明未来的问题,通常是一种更好的做法。

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

编辑:
同样在readLines()方法之前,您已经声明:

private static void LoadCourses();

此方法没有主体,因此编译器会抱怨。如果您不需要它,请将其删除或实施。

于 2013-02-01T02:02:14.337 回答