java - 数组一遍又一遍地打印出相同的单元格

标签 java arrays

我让用户输入数据名字、姓氏和号码。问题是当我打印数组时,它只会打印最后输入的数据。

例如,如果用户输入:(F,V 12345) (L、K 2345) (红、绿 4555) //使用首字母缩写代替名字

程序将打印出:

R、G 4555 红、绿 4555 红、绿4555

Datab.java

 public Datab()
{
    first = null;
    last = null;
    cell = null;
}

public Datab(String f, String l, String c)
{
    first=f;
    last=l;
    cell=c;

}
public static String getFirst(Datab friends)
{
    Scanner kb = new Scanner(System.in);
    System.out.println("Enter First name: ");
    first = kb.next();
    return first;

}
public static String getLast(Datab friends)
{
    Scanner kb = new Scanner(System.in);
    System.out.println("Enter Last name: ");
    last = kb.next();


    return last;  
} 
public static String getCell(Datab friends)
{
    Scanner kb = new Scanner(System.in);
    System.out.println("Enter Cell Number: ");
    cell = kb.next();

    return cell;

}



 public String toString(){




 return (first + " ,"+" "+ last + " "+ cell);



   }

}

DBMS.java

Datab[] friends = new Datab[n];


    for (int i = 0; i < friends.length; i++) {
        friends[i] = new Datab();
        System.out.println("\nFilling object #: " + (i + 1));



        friends[i].getFirst(friends[i]);

        friends[i].getLast(friends[i]);
        friends[i].getCell(friends[i]);


    }

for(int x=0; x<friends.length; x++){

            System.out.println(friends[x]);
        }

最佳答案

您将变量 first、last、cell 定义为静态的原因。

您应该删除静态并使其特定于实例。这同样适用于方法。

当你将一个变量设为静态时,你只有一个相同的实例,无论你最后分配的值是什么,都是你将看到的,因此无论你之前分配了什么,你都会看到相同的值被打印出来.

关于java - 数组一遍又一遍地打印出相同的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29362272/

相关文章:

java - 如何正确使用 java.util.Locale 检查澳大利亚语言环境

java - 基本构造函数链接调用

arrays - Arduino atmega2560代码大小

javascript - 如何使用变量而不是字符串按 Mongoose 上的数组索引排序?

c++改组动态数组的内容?

c++ - 声明一个十六进制数的数组

Java简单数字游戏当EditText为空时应用程序崩溃

Java泛型,为什么在泛型中使用继承是非法的?

java - 如何使用 byte buddy 在运行时有效地将接口(interface)与 POJO 关联?

Python:struct 和 array 与 ctypes 中的相似功能