- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在下面包含了我的所有代码(5 个类(class)),用于一个简单的学生数据库。
我与相信在 Name、Address 和 Student 类中有必要包含所有 getter 的人共同编写了这段代码和目前在那里的二传手。我认为代码在没有它们的情况下也能正常工作,并且它们不是必需的并且应该被删除?如果它们是必要的,有人可以解释为什么或者有人可以确认它们不是必需的吗?
public class Address {
private String street, area, city, country;
public Address(String street, String area, String city, String country) {
this.street = street;
this.area = area;
this.street = city;
this.country = country;
}
public void setStreet(String street) {
this.street = street;
}
public void setArea(String area) {
this.area = area;
}
public void setCity(String city) {
this.city = city;
}
public void setCountry(String country) {
this.country = country;
}
public String street() {
return street;
}
public String area() {
return area;
}
public String city() {
return city;
}
public String country() {
return country;
}
/** Returns area, street, city and country concatenated together respectively */
public String toString() {
return area + ", " + street + ", " + city + ", " + country + ".";
}
}
public class Name{
private String firstName, lastName;
public Name (String firstName, String lastName){
this.firstName = firstName;
this.lastName = lastName;
}
public void setFirstName(String firstName){
this.firstName = firstName;
}
public void setLastName(String lastName){
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
/** Returns first name concatenated to last name */
public String toString() {
return firstName + " " + lastName;
}
}
public class Student {
private Name name; // This is calling from the Name class, giving it the name 'name'
private Address address; // This calls from Address, giving it the name 'address'
private char gender;
private String course, college;
private int gradePointAverage, id, age, level;
public Student(int id, String firstName, String lastName, String street, String area, String city, String country, int age, char gender, String college, String course, int level, int gradePointAverage){ //This is the list of variables called from the Student class
this.id = id;
this.name = new Name(firstName, lastName);
this.address = new Address(street, area, city, country);
this.age = age;
this.gender = gender;
this.college = college;
this.course = course;
this.level = level;
this.gradePointAverage = gradePointAverage;
}
public int getId(){
return id;
}
public String getName(){
return name.toString();
}
public String getAddress(){
return address.toString();
}
public int getAge(){
return age;
}
public char getGender(){
return gender;
}
public String getCollege(){
return college;
}
public int getLevel() {
return level;
}
public String getCourse() {
return course;
}
public int getGradePointAverage() {
return gradePointAverage;
}
public void printStudent() {
System.out.println("The Student " + name.toString() + " is logged under the student ID number " + id + ".");
System.out.println("They live at " + address.toString() + " and their age is " + age + ".");
System.out.println("Their gender is " + gender + ".");
System.out.println("The student studies at " + college + " attending classes in " + course + ".");
System.out.println("Their level is " + level + " and the student grade average in points is " + gradePointAverage + ".");
System.out.println();
}
}
import java.util.*;
public class CollegeCommunity
{
private ArrayList<Student> students; // Setting up an arraylist to store student details
public CollegeCommunity()
{
students = new ArrayList<Student>();
}
public void addStudent(Student student) // adds a student.
{
students.add(student); // .add method command.
}
public void removeStudent(int id) // deleting a student, after being passed id to locate desired student.
{
for (int i=0; i<students.size(); i++ ){ // using a loop to decide what student to remove by matching the student ID which was passed to the method with the student ID's on record. Once there's a match, the student will be removed (.remove).
if(students.get(i).getId()==id) {
students.remove(i);
}
}
}
public void showStudent(int id) // same as remove above but instead using print command to view details of particular student.
{
for (int i=0; i<students.size(); i++ ){
if(students.get(i).getId()==id) {
students.get(i).printStudent();
}
}
}
public void showAllStudents()
{
for (int i=0; i<students.size(); i++ ){ // This loop command will display ALL student details as no specific ID was passed, so it will run as long as value 'i' is less than student.size.
int id=students.get(i).getId();
showStudent(id);
}
}
public void showStudentsInCourse(String course) // This will show students in a particular course.
{
for(int i=0; i<students.size(); i++ ){ // Loop is same as remove but comparing the string course with the course of each student. .equals is used to compare strings.
if(students.get(i).getCourse().equals(course)){
int id=students.get(i).getId();
showStudent(id);
}
}
}
public int calculateGradePointAverage() // calculating the grade point average as a percentage
{
int total = 0;
for (int i = 0; i < students.size(); i++ ){
total = total + students.get(i).getGradePointAverage(); // total is calculated as it loops, each students score (getGradePointAverage).
}
total = total / students.size(); // final figure is total divided by the number of students, to give an average score.
return total;
}
}
import java.util.*;
public class TestSystem
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
Student student;
CollegeCommunity collegeCommunity = new CollegeCommunity(); // New CollegeCommunity created called 'collegeCommunity'.
int id, age, level, gradePointAverage; // ints created for student id, age, level of course, and the grade point value
String fName,lName, street, area, city, country, course, college; // first name, last name strings created
char gender; // character gender created
boolean finish = false; // boolean finish has value of False.
do
{
switch(getMenu())
{
case '1':
System.out.println();
System.out.print("Please enter a new Student ID > ");
id = sc.nextInt();
sc.nextLine();
System.out.println();
System.out.print("Please enter the Student's first name > ");
fName = sc.nextLine();
System.out.println();
System.out.print("Please enter the Student's last name > ");
lName = sc.nextLine();
System.out.println();
System.out.print("Please enter the street > ");
street = sc.nextLine();
System.out.println();
System.out.print("Please enter the area > ");
area = sc.nextLine();
System.out.println();
System.out.print("Please enter the city > ");
city = sc.nextLine();
System.out.println();
System.out.print("Please enter the country > ");
country = sc.nextLine();
System.out.println();
System.out.print("Please enter the age > ");
age = sc.nextInt();
sc.nextLine();
System.out.println();
System.out.print("Please enter the gender > ");
gender = sc.nextLine().charAt(0);
System.out.println();
System.out.print("Please enter the college > ");
college = sc.nextLine();
System.out.println();
System.out.print("Please enter the course > ");
course = sc.nextLine();
System.out.println();
System.out.print("Please enter level > ");
level = sc.nextInt();
sc.nextLine();
System.out.println();
System.out.print("Please enter the average grade in points [0-100] > ");
gradePointAverage = sc.nextInt();
sc.nextLine();
System.out.println();
student = new Student(id, fName, lName, street, area, city, country, age, gender, college, course, level, gradePointAverage);
collegeCommunity.addStudent(student);
break;
case '2':
System.out.println();
System.out.print("Please enter the student ID number > ");
id = sc.nextInt();
sc.nextLine();
// this will delete the student selected
collegeCommunity.removeStudent(id);
System.out.println();
System.out.print("Student " + id + " has been deleted.");
System.out.println();
System.out.println();
break;
case '3':
System.out.println();
System.out.print("Please enter the student ID number > ");
id = sc.nextInt();
sc.nextLine();
// This will allow for the details of the selected student to be displayed. Calls stored data from community college.
collegeCommunity.showStudent(id);
System.out.println();
System.out.println();
break;
case '4':
System.out.println();
// This will show all of the students stored in the system.
collegeCommunity.showAllStudents();
System.out.println();
break;
case '5':
System.out.println();
System.out.print("Please enter the course > ");
course = sc.nextLine();
// This will show students that are enrolled in a chosen course.
collegeCommunity.showStudentsInCourse(course);
System.out.println();
break;
case '6':
System.out.println();
System.out.print("The Average grade score is " + collegeCommunity.calculateGradePointAverage() + "%");
System.out.println();
break;
case 'x':
case 'X':
finish = true; // boolean value changes to true if X is selected
System.exit(0);
break;
default:
System.out.println();
System.out.println("That is an invalid selection.");
System.out.println(" Please try again");
break;
}
}while (!finish);
}
public static char getMenu()
{
Scanner sc = new Scanner(System.in);
System.out.println();
System.out.println("This is your community college menu");
System.out.println("Please select from the menu options below");
System.out.println();
System.out.println("1 Add a Student");
System.out.println();
System.out.println("2 Delete a Student");
System.out.println();
System.out.println("3 Show details on an individual student");
System.out.println();
System.out.println("4 Show details on all students");
System.out.println();
System.out.println("5 Shows details on all students on a course");
System.out.println();
System.out.println("6 Display the average grade (points)");
System.out.println();
System.out.println("X Exit");
System.out.println();
System.out.println();
System.out.print("Please make selection > ");
return sc.next().charAt(0);
}
}
最佳答案
您始终可以将属性设置为 public
或 protected
或使用默认范围并访问它们(前提是类在适当的包中)
myStudent.age = 9;
也就是说,使用 setter 和 getter 总是好的做法。它简化了对设置哪些值的控制。例如。你可以在你的集合中检查,这样年龄就不会小于 4
public void setAge(int age) throws Exception {
if (age <= 3) {
throw new Exception("Age must be more than 3");
}
this.age = age;
}
用属性设置这个留给程序员,他们可能会错过代码中某处的检查。稍后调试非常棘手。
Setter 和 getter 还有助于添加日志/断点以检查程序的行为。
大多数像样的 IDE 都允许您仅从属性中自动编写 setter 和 getter 代码,所以这没什么大不了的。
作为旁注,我通常建议在需要时存储出生日期并计算年龄,因为年龄是一个会发生变化的值,而出生日期不会,而且您始终可以根据出生日期计算年龄,但不能相反。
关于java - 此代码运行是否需要 getter 和 setter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11815449/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!