我目前正在尝试完成硬件任务,并且老实感到困惑,如何才能超越这一点。
我应该问用户一个由1和0组成的24位字符串长度。我只是似乎不明白我将如何用仅1个值填充每个单个阵列插槽。在给定24位字符串的1和0之后,我假设将24位字符串转换为3个单独的8位整数分量,这些分量代表0-255之间的数字,假定其值在RGB范围内。
例如,我将输入一个字符串“ 111111110000000000000000”,它将代表红色的“ 111111111”(255),代表绿色的“ 00000000”(0)和代表蓝色的“ 00000000”,因此该值代表纯红色。
我非常想开始该做些什么,但我认为这样
import java.util.Scanner;
public class Test {
public static void main(String args[]){
String[] bitString;
bitString = new String[24];
Scanner consuleInput = new Scanner(System.in);
System.out.println("what is your input bit string?");
for(int i=0;i < bitstring.length; i++) {
bitString = consuleInput.nextLine();
// this was my rough idea on how to go through the array at everyone spot
// and fill in a 0 or 1 depending on what the giving bitString is
}
老实说,当涉及将位串分为三个部分时,我不确定。我认为这有点像您将[0]到[7]的位字符串数组分配给redValue,将[8]-[15]分配给绿色,将[16]-[23]分配给蓝色。与这三个分裂,我会用像
int re = Integer.parseInt(redValue, 2);
这将给我从bitString [0]到bitString [7]的1和0的字符串的整数值。我只是不完全确定如何实现它。
最佳答案
在您的原始代码中,您的for
循环条件中有一个错字-bitstring
应该为bitString
。您还试图将String
分配给整个数组(String[]
)。您需要以某个索引访问该数组,然后为其分配一个值。
for (int i = 0; i < bitString.length; i++) {
bitString[i] = consuleInput.nextLine();
}
但是,我提出了一种更好的方法。不用一次获取输入,而是获取整个字符串并使用
subtring()
将每8位转换为十进制。如果需要,如果字符串不是24个字符长或不是二进制值,您仍然可以实现验证以打印错误。public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("what is your input bit string?");
String input = scanner.nextLine();
int[] rgb = {
Integer.parseInt(input.substring(0, 8), 2),
Integer.parseInt(input.substring(8, 16), 2),
Integer.parseInt(input.substring(16, 24), 2)
};
}