gpt4 book ai didi

Java:有没有办法在 boolean 数组上实现移位?如果是这样,我该如何去做呢?

转载 作者:行者123 更新时间:2023-12-02 04:28:40 27 4
gpt4 key购买 nike

我正在尝试根据用户希望数字移动的次数将 boolean 数组向左移动,但我不知道是否可以移动数组。我知道我可以移动整数,所以我应该将 boolean 数组转换为 int,移动它,然后将其转换回数组吗?这似乎只是为了取得微小成果而付出的巨大努力。如果有人有解决方案,请帮忙!!!!

最佳答案

我假设你的意思是假设一个 boolean 值数组是一个二进制值,比如 int,然后将其从左向右移位。

查看 int 值 1,会发生这种情况

    int c = 1; 
c <<= 1; // 10

c = 1;
c >>= 1; //0

为了模仿这种行为,假设我有一个 boolean 值数组 (1/0),并且我推断它代表数字中的位。

我就是这样做的......

我将使用 ArrayDeque 作为复合对象创建自己的自定义类,然后添加移位功能。

import java.util.Iterator;
import java.lang.Boolean;
import java.util.ArrayDeque;
import java.util.Arrays;
import java.lang.Integer;

public class BooleanArray{

ArrayDeque<Boolean> number;

public BooleanArray(Boolean [] nums){
number = new ArrayDeque<Boolean>(Arrays.asList(nums));
}

// >>
public void shiftRight(int times){

while(times-- > 0){
number.removeFirst();
number.addLast(false);
}
}

// <<
public void shiftLeft(int times){

while(times-- > 0) number.addFirst(false);

}

public String toString(){

Iterator<Boolean> it = number.descendingIterator();
String str = "";
while(it.hasNext()){

if(it.next()) str += "1";
else str += "0";
}

return str;

}

public static void main(String [] args){

int c = 1;
System.out.println(Integer.toBinaryString(c));
c <<= 1;
System.out.println(Integer.toBinaryString(c));

c = 1;
System.out.println(Integer.toBinaryString(c));
c >>= 1;
System.out.println(Integer.toBinaryString(c));


System.out.println("==========");
Boolean [] cArr = {true};
BooleanArray arr = new BooleanArray(cArr);
System.out.println(arr.toString());

arr.shiftLeft(1);
System.out.println(arr.toString());

arr = new BooleanArray(cArr);
System.out.println(arr.toString());

arr.shiftRight(1);
System.out.println(arr.toString());

}

}

关于Java:有没有办法在 boolean 数组上实现移位?如果是这样,我该如何去做呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31823142/

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