See*_*und 7 java static increment uniqueidentifier instance-methods
对此非常新,所以我希望我的标题中的术语正确.
我试图找出如何创建将执行以下操作的实例方法:
- 返回身份证号码.
- 由于每个对象是从类构造函数(实例化?)创建的,因此会为其分配唯一的整数ID号.第一个ID号是1,并且当实例化新对象时,将分配连续的数字.
我能够找到上面做的类/静态方法的例子但是我无法弄清楚如何用实例方法做到这一点.我的尝试如下:
class Coordinates
{
private int iD = 0;
private float xCoordinate;
private float yCoordinate;
public Coordinates()
{
//Asks for input and assigns it to the two variables below
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter the X Coordinate followed by the return key");
xCoordinate = keyboard.nextDouble();
System.out.println("Please enter the Y Coordinate followed by the return key");
yCoordinate = keyboard.nextDouble();
iD++;
}
public getiD()
{
return iD;
}
}
Run Code Online (Sandbox Code Playgroud)
我的主要方法如下:
public class Machine
{
public static void main(String[] args)
{
Coordinates c1 = new Coordiantes();
Coordinates c2 = new Coordiantes();
Coordinates c3 = new Coordiantes();
System.out.println("ID: " + c1.getID());
System.out.println("ID: " + c2.getID());
System.out.println("ID: " + c3.getID());
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,为了简单起见,我没有包含我的整个代码.我希望我增加了足够多.
我也不想使用java.util.UUID.
现在的问题是您的“id”是一个实例变量,这意味着它属于您创建的对象。想象一下,每次创建一个对象时,都会创建一个新的实例变量副本。因此,每次创建对象时,id 首先设置为 0,然后 post 递增一次(因此所有对象的 id=0)。
如果您想创建一个变量,例如,自动计算您在类中创建的所有对象或具有 id 的所有对象,您需要创建一个类变量。这些变量属于您从类创建的所有对象,并且用于该类的关键字是“静态”。
注意:我使用了静态变量,但不是静态方法。如果您根本不想使用静态,那是另一个问题
class Coordinates
{
private static int count = 0;
private int id=0;
private float xCoordinate;
private float yCoordinate;
public Coordinates()
{
//Asks for input and assigns it to the two variables below
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter the X Coordinate followed by the return key");
xCoordinate = keyboard.nextDouble();
System.out.println("Please enter the Y Coordinate followed by the return key");
yCoordinate = keyboard.nextDouble();
id=count++;
}
public getiD()
{
return iD;
}
}
Run Code Online (Sandbox Code Playgroud)
关键字的简单更改将使您的程序正确。你不必做太多复杂的事情。
一开始很难掌握类和对象、静态和实例变量的概念。如果您需要更多解释,请告诉我:)