如何将额外变量组合到数组/方法中?

时间:2014-04-16 12:26:00

标签: java arrays class methods

我创建了一个输出学生详细信息的简单程序。理想情况下,我想为用户提供添加两个课程的选项。这是否需要对更改代码进行大量修改?如果没有,有人可以帮忙吗?

class Student
{
    public static void main(String[]args)//The main method; starting point of the program.
    {
        Scanner input = new Scanner(System.in);

        String surName, foreName, courseName;
        int age,telephone;

        System.out.println("\t\t\t***********************************************");    
        System.out.println("\t\t\tWelcome to the Mobile College's Student Records");
        System.out.println("\t\t\t***********************************************");
        System.out.println("\nHow many students would you like to add?");
        int noStudents = input.nextInt();

        Stu [] TheStu = new Stu [noStudents];

        for (int x = 0; x < noStudents; x++)
        {
            System.out.println("Please enter Surname: ");
            surName = input.next();
            System.out.println("Please enter Forename: ");
            foreName = input.next();
            System.out.println("Please enter Age: ");
            age = input.nextInt();
            System.out.println("Please enter Telephone No. ");
            telephone = input.nextInt();
            System.out.println("Which course do you want to add the student to? .......Literacy or Numeracy  ");
            courseName = input.next();

            TheStu [x] = new Stu (surName, foreName, age, telephone, courseName);
        }

        for (int y = 0; y < noStudents; y++)
        {
            System.out.println("\t\t\t***********************************************");
            System.out.println ("\t\t\tName: " + TheStu[y].getfName() + " " + TheStu[y].getsName());
            System.out.println ("\t\t\tAge: " + TheStu[y].getstuAge());
            System.out.println ("\t\t\tTelephone No. 0" + TheStu[y].getphone());
            System.out.println ("\t\t\tEnrolled on the " + TheStu[y].getcourseType() + " Course.");
            System.out.println("\t\t\t***********************************************");
        }

    }// end of class
}

class Stu
{
    private String sName;
    private String fName;
    private int stuAge;
    private int phone;
    private String courseType;

    Stu (String s, String f, int a, int p, String c)
    {
        sName = s;
        fName = f;
        stuAge = a;
        phone = p;
        courseType = c;
    }

    String getsName()
    {
        return sName;
    }   

    String getfName()
    {
        return fName;
    }   

    int getstuAge()
    {
        return stuAge; 
    }

    int getphone()
    {
        return phone; 
    }

    String getcourseType()
    {
        return courseType;
    }
}

2 个答案:

答案 0 :(得分:1)

如果你想要一些非常基本的东西,你可以将你的课程改成一个String数组,这样你就可以存储这两个课程。此外,当要求用户输入课程名称时,您可以选择ALL,这样您就可以自动为所有课程注册学生。请参阅下面的代码略微修改版本:

import java.util.Scanner;

class Student
{
public static void main(String[] args)//The main method; starting point of the program.
{
    Scanner input = new Scanner(System.in);

    String surName, foreName, courseName;
    String[] courses = new String[]{};
    int age,telephone;

    System.out.println("\t\t\t***********************************************");    
    System.out.println("\t\t\tWelcome to the Mobile College's Student Records");
    System.out.println("\t\t\t***********************************************");
    System.out.println("\nHow many students would you like to add?");
    int noStudents = input.nextInt();

    Stu [] TheStu = new Stu [noStudents];

    for (int x = 0; x < noStudents; x++)
    {
        System.out.println("Please enter Surname: ");
        surName = input.next();
        System.out.println("Please enter Forename: ");
        foreName = input.next();
        System.out.println("Please enter Age: ");
        age = input.nextInt();
        System.out.println("Please enter Telephone No. ");
        telephone = input.nextInt();
        System.out.println("Which courses do you want to add the student to? .......Literacy or Numeracy or both ");

        courseName = input.nextLine();
        // change to either upper case or lower case for easy treatment
        courseName = courseName.toUpperCase();
        // Also verify that the user entered a valid course name
        if(courseName.equals("LITERACY")){
            courses = new String[]{"LITERACY"};
        } else if(courseName.equals("NUMERACY")){
            courses = new String[]{"NUMERACY"};
        } else if(courseName.equals("BOTH")){
            courses = new String[]{"LITERACY", "NUMERACY"};
        } else{
            System.out.println("Error : You entered an invalid option.... \n This student won't be registered for any courses");
        }

        TheStu [x] = new Stu (surName, foreName, age, telephone, courses);
    }

    for (int y = 0; y < noStudents; y++)
    {
        System.out.println("\t\t\t***********************************************");
        System.out.println ("\t\t\tName: " + TheStu[y].getfName() + " " + TheStu[y].getsName());
        System.out.println ("\t\t\tAge: " + TheStu[y].getstuAge());
        System.out.println ("\t\t\tTelephone No. 0" + TheStu[y].getphone());
        System.out.println ("\t\t\tEnrolled in the following courses : ");
        courses = TheStu[y].getcourseTypes();
        for(int i = 0; i < courses.length; i++){
            System.out.println(courses[i]);
        }
        if(courses.length < 1){
            System.out.println("No Courses");
        }
        System.out.println("\t\t\t***********************************************");
    }

}// end of class
}

class Stu
{
private String sName;
private String fName;
private int stuAge;
private int phone;
private String[] courseTypes;

Stu (String s, String f, int a, int p, String[] c)
{
    sName = s;
    fName = f;
    stuAge = a;
    phone = p;
    courseTypes = c;
}

String getsName()
{
    return sName;
}   

String getfName()
{
    return fName;
}   

int getstuAge()
{
    return stuAge; 
}

int getphone()
{
    return phone; 
}

String[] getcourseTypes()
{
    return courseTypes;
}
}

我尽可能地尝试不对代码进行任何重大更改,因为我认为您是初学者,但是您可以对改进代码进行大量更改。快乐编码:)

答案 1 :(得分:0)

当您要求提供课程名称时,请继续询问,直到他们输入sentinal value。在StuList<String> courseTypes。将输入的课程存储在courseTypes中。此外,您可能希望为Stu中的某些字段添加设置值。如果他们的电话号码改变怎么办?

相关问题