【问题标题】:I can not increase the studentid value in For我无法增加 For 中的 studentid 值
【发布时间】:2020-07-15 22:39:05
【问题描述】:

我正在用 Java 进行一些编码,但它不起作用:

导入 java.util.Scanner;

导入 java.util.Arrays;

公共类主要 {

    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);

        String [] studentId = new String [3];

        Student name;

        for (int i = 0; i < 3; i++) 
        {
        System.out.print("Enter Name => ");
        name = new Student(input.next());
        studentId[i] = name.toString();
        }
        for (int i = 0; i < 3; i++) 
        {
        System.out.println(studentId[i]);
        }    
}
}
public class Student
{
    private static int studentId;
    private String name;

    public Student(String name) 
    {
    this.name=name;    
    setStudentId(studentId++);
    }

    public int getStudentId() 
    {
    return studentId;
    }

    public void setStudentId(int studentId) 
    {
    this.studentId = studentId;
    }

    @Override
    public String toString()
    {
        return (this.studentId +" "+ "student is "+ " " + "(" + this.studentId + ")"+ this.name);
    }
}

我需要在创建新条目时自动增加 ID。 我尝试了所有方法,但仍然无法增加它。

【问题讨论】:

  • @javajaba 那不是他的问题
  • 为什么不起作用?您看到什么错误或发生了什么?请提供更多信息
  • 您接受的答案无助于您设置课程的方式。每个学生最终都将获得相同的学生 ID
  • 为什么接受的答案不起作用:onlinegdb.com/Sylr3PIvI

标签: java arrays for-loop auto-increment


【解决方案1】:

在构造函数中应该是:

{
    public Student(String name) 
    {
        this.name=name;    
        setStudentId(studentId + 1);
    }
}

【讨论】:

  • 这不能解决问题。他将学生 ID 作为静态变量。这只会将其从所有学生身份为 0 的学生更改为所有学生身份为 3 的学生
  • 嗨@Kevin,你试过我的代码了吗?如果我是对的,请给我一票。谢谢
  • 它只“起作用”,因为他在创建它后立即调用它。如果他在实例化所有对象后等待并在每个对象上调用 string,您会看到所有 studentId 都是相同的。我在这里演示过:onlinegdb.com/Sylr3PIvI
【解决方案2】:

您正在为每个人的 ID 使用静态变量。您需要一个单独的非静态字段来存储每个单独的 ID。

public class Student
{
    private static int nextAvailableStudentId = 1;
    private String name;
    private int studentId;

    public Student(String name) 
    {
    this.name=name;    
    setStudentId(nextAvailableStudentId++);
    }

    public int getStudentId() 
    {
    return studentId;
    }

    public void setStudentId(int studentId) 
    {
    this.studentId = studentId;
    }

    @Override
    public String toString()
    {
        return (this.studentId +" "+ "student is "+ " " + "(" + this.studentId + ")"+ this.name);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-05
    • 2022-01-10
    • 2022-12-04
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多