gpt4 book ai didi

java - Java 公共(public)枚举的问题

转载 作者:行者123 更新时间:2023-12-02 13:40:05 25 4
gpt4 key购买 nike

我正在尝试使用 Java 编程语言模拟 BB84 协议(protocol)。不管怎样,我在从结果中获取互补/反转数据集时遇到了一些麻烦。

在我的程序中,总共涉及3个步骤。

1. Generate 5 random binary number **check** 
---> exp: 10010
2. Random bases to represent each bits (either rectilinear or diagonal) **check**
---> exp: RECTILINEAR, RECTILINEAR, DIAGONAL, DIAGONAL, RECTILINEAR
3. Complimentary bases (Invert bases used in second step) **not check**
---> exp: DIAGONAL, DIAGONAL, RECTILINEAR, RECTILINEAR, DIAGONAL

这是我的可运行程序:here

如您所见,我尝试编写一个类 Basis complimentary()在 Basis.java 中,它将接受生成的随机基并反转所使用的基。

public enum Basis {
RECTILINEAR,
DIAGONAL;

public static Basis random() {
int i = (int)(Math.random()*2);
if(i==0)
return Basis.RECTILINEAR;
else
return Basis.DIAGONAL;
}


public static Basis complimentary() {

if (Basis.random()==Basis.RECTILINEAR)
{
return Basis.DIAGONAL;
}
else
{
return Basis.RECTILINEAR;
}
}

}

但我注意到它再次生成随机碱基,并且我的第三步似乎没有输出第二步中使用的反转集。感谢帮助。

编辑:

所以,在FilterScheme2.java中,我在构造函数中引用了FilterScheme1.java,如下所示。

public class FilterScheme2 extends AbstractScheme{
private Filter[] filters;

public FilterScheme2(int size) {
super(size);

filters = new Filter[size];

FilterScheme1 f = new FilterScheme1(size);//reference to FilterScheme1.java

for(int i=0;i<size;i++) {
filters[i] = new Filter(filters[i].getBasis().complimentary()); //generate the second set of complimentary bases (rectilinear/diagonal)
}

}

我尝试输出System.out.println(f.toString());确保我获得与 FilterScheme1 相同的数据,但它似乎再次生成随机碱基。可能是什么问题?

最佳答案

您需要提及您想要赞美的具体实例。这可以通过作为参数传递或使 complimentary 非静态来完成:

public static Basis complimentary(Basis subject) {
if (subject == Basis.RECTILINEAR)
{
return Basis.DIAGONAL;
}
else
{
return Basis.RECTILINEAR;
}
}

Basis.complimentary(Basis.DIAGONAL); // RECTILINEAR

或者

public Basis complimentary() {
if (this == Basis.RECTILINEAR)
{
return Basis.DIAGONAL;
}
else
{
return Basis.RECTILINEAR;
}
}

Basis.DIAGONAL.complimentary(); // RECTILINEAR

关于java - Java 公共(public)枚举的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42781484/

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