我目前正在尝试完成硬件任务,并且老实感到困惑,如何才能超越这一点。

我应该问用户一个由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)
    };
}

10-04 11:26
查看更多