我做了一个小项目,我只是想知道我是否能为这个项目添加更多的功能,例如,更多的类等等。是否有更好的方法来显示我的结果,以及我能做什么错误处理?
我还想知道什么是将继承添加到这个项目中的最佳方式,我正在考虑一个EveningCourse
类或PostGrad
,UnderGrad
类。最好的办法是什么?
用户输入学生姓名、年龄、年份和学生号码。
package david;
public class Student
{
private String name;
private int age;
private int year;
private String studentNum;
public Student(String name, int age, int year, String studentNum)
{
this.name = name;
this.age = age;
this.year = year;
this.studentNum = studentNum;
}
// Setters and getters (Name, Age, Year and Student Number)
public String getName() // name
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge() // age
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public int getYear() // year
{
return year;
}
public void setYear(int year)
{
this.year = year;
}
public String getstudentNum() // studentNum
{
return studentNum;
}
public void setstudentNum(String studentNum)
{
this.studentNum = studentNum;
}
}
package david;
// David Needham - G00263842.
// Student information program.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class TestStudents
{
public static void main(String[] args) throws IOException
{
System.out.println("============" + "=================");
System.out.println("Students " + "Personal Details");
System.out.println("============" + "=================");
String name;
int age;
int year;
String studentNum;
List<Student> studentsList = new ArrayList<Student>();
for (int i = 0; i < 2; i++)
{
int studentNumber = (i + 1);
System.out.println("");
System.out.println("Please enter " + "data for student " + studentNumber);
InputStreamReader converter = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(converter);
System.out.println("Enter Student "+ studentNumber + " Name:");
name = in.readLine();
System.out.println("Enter Student " + studentNumber + " Age (Integer):");
age = Integer.valueOf(in.readLine());
System.out.println("Enter Student " + studentNumber + " Year (Integer):");
year = Integer.valueOf(in.readLine());
System.out.println("Enter Student " + studentNumber + " Student Number:");
studentNum = in.readLine();
Student student = new Student(name, age, year, studentNum);
studentsList.add(student); // add student
}
for (int j = 0; j < studentsList.size(); j++)
{
Student st = studentsList.get(j);
System.out.println("Student : " + (j + 1));
System.out.println("Name: " + st.getName() + " - Age: " + st.getAge() + " - Year: " + st.getYear() + " - Student Number: " + st.getstudentNum());
}
}
}
发布于 2012-12-05 20:38:35
是的,您可以向项目添加更多功能。您可以在许多不同的指导机构,如增加课程的学生和注册。
至于错误处理,您可以在Student
类的set函数中添加一个检查,以检查格式或内容,并根据它们是否通过验证返回一个布尔值。例如,由于studentnum
是一个字符串,您可以检查字母和数字的格式是否正确,如果有某种格式的话。
您还可以在从用户读取值的代码周围使用try-catch块。或者验证用户是否为每个条目输入了一个可接受的值,例如检查当用户被要求输入年龄时,检查是否确实输入了一个数字。
发布于 2013-10-02 13:16:26
一些普通的东西。您的空白和缩进的使用是混乱的,修复它!
Java通常使用修改后的K&R样式,并在同一行中使用开头大括号,如下所示:
function test() {
if (condition) {
// Stuff
} else {
// Stuff
}
}
package david;
在这种情况下,这是次要的和/或不必要的,但请记住,包名应该给出一些信息包,f.e。是谁写的。
package com.yourcompany.department.package;
package com.gmail.youremailname.package;
public String getName() // name
只要有可能使用JavaDoc,它就可以被各种工具和IDE所使用,并且可以使您的生活更加轻松。
/**
* The (full, first and last) name of the Student.
*/
public String getName()
您可以添加一个空构造函数并直接填充对象,而不是创建局部变量和创建对象。
Student student = new Student();
student.setName(fromInput);
student.setAge(fromInput);
...
List<Student> studentsList = new ArrayList<Student>();
这个变量最好命名为students
。从复数中,您已经可以感觉到这是某种集合,通过查看定义就可以知道它是一个列表。没有任何匈牙利符号的必要。
您可以将这些值的读取提取到它自己的类中,这样您就可以这样做:
InputReader reader = new InputReader(System.out, System.in);
//Inside the for
Student student = new Student();
student.setName(reader.getString("Please enter the name: "));
student.setAge(reader.getInt("Please enter the ager: "));
...
for (int j = 0; j < studentsList.size(); j++)
{
Student st = studentsList.get(j);
使用适当的循环,在本例中是一个for each
:
for(Student student : studentsList) {
private String studentNum;
这个变量更好地命名为ID
,这将使对象更加清晰:
student.getID();
student.setID(id);
studentsList.add(student); // add student
评论应该主要解释为什么你做某事的方式,以及部分如何。您不需要解释“明显”的事情,比如递增一个整数。在这种情况下,您的注释与您的代码完全相同,实际上,代码更精确。
public static void main(String[] args) throws IOException
这是baaaad。应用程序应该优雅地处理异常,main()
不应该抛出异常。
发布于 2013-10-03 09:29:42
你可以让学生成为一个抽象的类,然后有UnderGrad和PostGrad类作为它的具体实现,并有他们自己的变体来实现基本方法。
这样你就可以灵活地容纳其他类型的学生了。例如,在开始读本科之前,学生们要上一门简短的语言课程。
https://codereview.stackexchange.com/questions/19341
复制相似问题