gpt4 book ai didi

java - 变量未在对象中定义

转载 作者:行者123 更新时间:2023-12-02 06:17:58 25 4
gpt4 key购买 nike

我创建了一个学生类(class),我需要使用学生的名字后跟他们的代码(第一个学生是 1000,nxt 是 1001)来创建一个 LoginId 使用 姓名的第一个字母 + 姓氏(或者如果姓氏超过 4 个字母,则仅姓氏的 4 个字母)+ 代码的结尾数字例如约翰贝克将是,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 没有被保存到全局变量中,这是为什么。

最佳答案

您需要在某处调用setloginId()方法。从您的评论来看,您似乎想在构造函数中执行此操作:

im just creating that constructor to try to set the loginId as a value

如下:

public Student(String name) {
this.name = name;
this.accountNumber = lastAssignedNumber;
lastAssignedNumber++;
setloginId(); //need to call this
}

您可能还想私有(private)化您的 setloginId() 方法,因为没有必要公开它:

private void setloginId() {

还有一个小改动,您可以更改:

    loginId += first_name + last_name + digit_short;
this.loginId = loginId;

至:

    this.loginId = first_name + last_name + digit_short;

没有必要执行 +=,因为它将附加到现有字符串,而您可能不希望这样做。

关于java - 变量未在对象中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21279391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com