我创建了一个学生班,我需要使用学生的名字,然后是他们的代码(第一个学生是1000,nxt是1001)来创建loginId使用 名字的第一个字母+姓氏(或如果姓氏长于4个字母,只是姓氏的4个字母)+其代码的结束数字 例如John Baker,jbake00
public class Student
{
//Instance variables
private double coursecount = 0;
private static int lastAssignedNumber = 1000;
private double credit;
private String course;
//Variables
public String name;
public String address;
public String loginId = "";
public int accountNumber;
public double gpa;
//Constructs new student
public Student(String name) {
this.name = name;
this.accountNumber = lastAssignedNumber;
lastAssignedNumber++;
setloginid();//edited this one in
}
public void setloginId() {
int position = this.name.indexOf(' ');
String first_name = this.name.substring(0,1);
String last_name = this.name.substring(position + 1);
if(last_name.length() >= 4)
last_name = last_name.substring(0,4);
first_name = first_name.toLowerCase();
last_name = last_name.toLowerCase();
String digit_word = new Integer(accountNumber).toString();
String digit_short = digit_word.substring(2);
loginId += first_name + last_name + digit_short;
this.loginId = loginId;
}
我在这里遇到的问题是loginId没有保存到全局变量中,为什么会这样。
答案 0 :(得分:2)
您需要在某处调用setloginId()
方法。从您的评论中,您似乎想在构造函数中执行此操作:
我只是创建该构造函数以尝试将loginId设置为值
如下:
public Student(String name) {
this.name = name;
this.accountNumber = lastAssignedNumber;
lastAssignedNumber++;
setloginId(); //need to call this
}
您可能还希望将setloginId()
方法私有化,因为没有必要公开它:
private void setloginId() {
也是一个小改动,你可以改变:
loginId += first_name + last_name + digit_short;
this.loginId = loginId;
为:
this.loginId = first_name + last_name + digit_short;
没有必要执行+=
,因为它会附加到您可能不想要的现有字符串。
答案 1 :(得分:0)
您必须从对象的构造函数中运行方法setLoginID。并且您可以将该方法设为私有方法,我认为从其他任何地方访问它都没有任何用处,而不是从构造函数中访问它