gpt4 book ai didi

java - 面向对象编程比较链表

转载 作者:行者123 更新时间:2023-12-02 10:27:22 26 4
gpt4 key购买 nike

我有 Bit 类的对象,它基本上是一个类,有一个名为 value 的字段,它是 boolean 值。

public class Bit {

private boolean value;

public Bit() {
this.value = false;
}

public Bit(boolean value) {
this.value = value;
}

public boolean getValue() {
return value;
}
}

它还有更多的方法。

然后我有一个名为 number 的类,它应该使用链接列表以二进制表示形式表示大数,其中第一个链接是 LSB,最后一个链接是 MSB。例如,如果我调用构造函数数字 num1 = 新数字(6);那么我将有一个如下所示的链接列表: 0 1 1 (null)

现在我想知道如何比较两个 Number 对象。例如:如果我有 num1,并且 Number num2 = new Number (7); [ 1 1 1 ]然后我想要一个方法来告诉我 num2 大于 num1

为了简单地比较两个二进制数,我会从 MSB 开始并比较每一位,一旦一个比另一个大,就意味着数字更大。我可以使用 Bit.toInt() 轻松获取每个链接(位)的整数值;

所以我正在考虑迭代列表并逐一比较这些位,问题是我的迭代器在第一个链接(LSB)之前开始,我知道我可以将它一直移动到末尾并开始使用 hasPrevious( )但我没有那个方法。我希望能够做到这一点,同时只检查每个列表一次。有任何想法吗?

public static boolean lessEq(Number num1, Number num2){ 
Iterator<Bit> it1 = num1.bitIterator().;
Iterator<Bit> it2 = num2.bitIterator();
}

构造函数数量:

public Number(){
list = new LinkedList<Bit>();
list.add(new Bit(false));
}

/**
* Constructs a new Number from an int.
* @param number an int representing a decimal number
*/
public Number(int number) { // assignment #1
list = new LinkedList<Bit>();
if(number == 0) list.add(new Bit(false));
if (number < 0) throw new IllegalArgumentException("number cannot be negative");

else {
while (number > 0) {
if (number % 2 == 0) {
list.add(new Bit(false));
}else list.add(new Bit(true));

number = number / 2;
}
}
}

编辑:它有效非常感谢您的评论!

最佳答案

  1. 最初您假设两个数字相等。
  2. 您可以从两个数字中获取位。如果其中一个已耗尽,则使用零。
  3. 如果两个位相等,则不会改变结果。
  4. 如果数字 A 的位为 1,则将数字 A 设置得更大。
  5. 如果数字 B 的位为 1,则将数字 B 设置得更大。
  6. 如果两个列表都已用尽,则返回结果。
  7. 否则,请重复第 2 步。

这考虑到了允许将不必要的零位作为 MSB 的列表的情况。

如果您想提交精美的作业,您可以从末尾开始,跟踪您所在的索引,并在第一个位不相等的比较处停止。

关于java - 面向对象编程比较链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53850140/

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