Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何读取字符串并将值放入数组?_Java_Arrays_Numbers_Sequence - Fatal编程技术网

Java 如何读取字符串并将值放入数组?

Java 如何读取字符串并将值放入数组?,java,arrays,numbers,sequence,Java,Arrays,Numbers,Sequence,我想读一个字符串: 变速器=2'b00至2'b11 并将值2'b00、2'b01、2'b10、2'b11提取到一个数组中。如何以最简单的方式做到这一点 用于: 输出应为: [2'b00, 2'b01, 2'b10, 2'b11] 按照上述相同的顺序进行。这样做不是很简单,因为有很多情况,例如,如果您有: "TRANS = 2'b00 to 3'c11" //you would not have the good results. 下面是一个拆分字符串的示例:它只是用于学习,对生产程序不是

我想读一个字符串:

变速器=2'b00至2'b11

并将值2'b00、2'b01、2'b10、2'b11提取到一个数组中。如何以最简单的方式做到这一点

用于:

输出应为:

[2'b00, 2'b01, 2'b10, 2'b11]

按照上述相同的顺序进行。

这样做不是很简单,因为有很多情况,例如,如果您有:

"TRANS = 2'b00 to 3'c11"   //you would not have the good results.
下面是一个拆分字符串的示例:它只是用于学习,对生产程序不是很好:

String str = "TRANS = 2'b00 to 2'b11";
String[] parts = str.split("="); 

String[] values= parts[1].split("to"); //part[1] is the right part after char =

int size = values.length;


String val_from = values[0].trim().split('b');
String val_to = values[1].trim().split('b');

String[] binary_values= {"00","01","10", "11"};

int start_count = 0;
for(i=0; i<4; i++){
    if(val_from[1]==binary_values[i]){
       start_count = i;
       break;
    }
}

ArrayList<String> result = new ArrayList<String>();

for(i=start_count ; i<4; i++){
    result.add(val_from[0]+binary_values[i]);
}


//here the new values are stocked in : result

你可以去掉开头和结尾。使用Integer类在十进制和二进制之间进行转换。范例

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Seq {

    public static void main(String[] args) {
        String str = "TRANS = 2'b00 to 2'b11"; 
        Matcher matcher = Pattern.compile("2'b\\s*(\\w+)").matcher(str);
        List<String> range = new ArrayList<String>();
        while (matcher.find()) {
            range.add(matcher.group(1));
        }
        if(range.size() == 2){
            List<String> output = new ArrayList<String>();
            int start = Integer.parseInt(range.get(0),2);
            int end = Integer.parseInt(range.get(1),2);
            for(int i=start; i<=end; i++){
                output.add("2'b" + String.format("%02d", Integer.parseInt(Integer.toBinaryString(i))));
            }
            System.out.println(output); // Prints [2'b00, 2'b01, 2'b10, 2'b11]
        }
    }
}

下面是另一个示例代码:

    String s = "TRANS = 2'b00 to 2'b11";
    //get max and min values, 00 and 11 here;
    int max_no=Integer.parseInt(s.substring(s.length()-2, s.length()));
    int min_no=Integer.parseInt(s.substring(s.indexOf("b", 1)+1,s.indexOf("b", 1)+3));
    String [] output = new String[max_no - min_no +1];
    for(int i=min_no; i<=max_no; i++){
        output[i] = "2'b"+ (i <10 ? "0" : "")+i;
    }
    for(int i=0; i< output.length ;i++){
        System.out.println(output[i]);

2'b01和2'b10是从哪里来的?到目前为止您尝试了什么?我猜对了吗,2'b之后的数字是二进制数字?这些是二进制数字值,在电子产品中是这样写的。其中00、01、10、11是增量值。我不知道如何读取字符串并获取这些增量值。我被困在这里了,请帮帮我@他们从b'00到b'11。它们不需要出现在原始字符串中,而是一个范围
    String s = "TRANS = 2'b00 to 2'b11";
    //get max and min values, 00 and 11 here;
    int max_no=Integer.parseInt(s.substring(s.length()-2, s.length()));
    int min_no=Integer.parseInt(s.substring(s.indexOf("b", 1)+1,s.indexOf("b", 1)+3));
    String [] output = new String[max_no - min_no +1];
    for(int i=min_no; i<=max_no; i++){
        output[i] = "2'b"+ (i <10 ? "0" : "")+i;
    }
    for(int i=0; i< output.length ;i++){
        System.out.println(output[i]);