Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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_String_Split - Fatal编程技术网

Java-耦合字符串并存储在数组中

Java-耦合字符串并存储在数组中,java,arrays,string,split,Java,Arrays,String,Split,我试图将用户的输入作为字符串hex,并将其拆分为若干对;然后我想将每对存储在一个数组中hexArray。换句话说,我想每两个字符拆分一次字符串。我想在每两个字符中插入一个-,然后使用String.split()来拆分它,但这是我设计的方法。在这种情况下,将用户输入的hex设置为“1234567”。这就是我到目前为止所做的: //removes last character from hex if length is odd and stores it back in hex he

我试图将用户的输入作为字符串
hex
,并将其拆分为若干对;然后我想将每对存储在一个数组中
hexArray
。换句话说,我想每两个字符拆分一次字符串。我想在每两个字符中插入一个
-
,然后使用
String.split()
来拆分它,但这是我设计的方法。在这种情况下,将用户输入的
hex
设置为
“1234567”
。这就是我到目前为止所做的:

    //removes last character from hex if length is odd and stores it back in hex
    hex = hex.length() % 2 == 0 ? hex : hex.substring(0, hex.length() - 1);

    String [] hexArray = new String[hex.length()/2];

    //initializes and prints the first element of the array as the first two chars
    //of hex
    System.out.println(hexArray[0] = hex.substring(0, 2));
    for (int i = 1; i + 3 < hex.length(); i++)
    {     
        System.out.println(hexArray[i] = hex.substring(i + 1, i + 3));

    }
我已经用我能想到的任何方法修改了for循环中的终止语句。如果要正确编译,它将输出

12
34
56

我启动数组的第一个元素只是为了避免出现
I=0
的情况。如何避免这种重叠?另外,是否有办法将
hexArray
的每个元素从十六进制形式转换为十进制形式(假设
hex
的字符由输入0-9和A-F(不区分大小写))组成,然后将
hexArray
的元素连接成一个字符串?TIA。

显然,假设字符串长度可以是偶数或奇数,您必须首先处理这种情况。在十六进制的开头添加0不会造成任何伤害,填充问题,像这样解决它

    String str = "123";
    String hex = "";
    while( ( str.length() % 2 ) != 0 )
    {
        str = "0" + str;
    }
一旦你处理好了,你就可以把所有的东西都编译成

    String str = "123";
    String hex = "";
    while( ( str.length() % 2 ) != 0 )
    {
        str = "0" + str;
    }
    System.out.println( str );
    for( int x = 0; x < str.length(); x++ )
    {
        hex += str.charAt(x);
        if( ( (x + 1) % 2) == 0 )
        {
            hex += '-';
        }
    }
    if( hex.endsWith("-") )
    {
        hex = hex.substring( 0 , hex.length() - 1);
    }
    System.out.println( hex );
    String[] hexArray = hex.split("-");
    System.out.println( java.util.Arrays.toString(hexArray) );

希望这对您的案例有所帮助???

显然,假设字符串长度可以是偶数或奇数,您必须首先处理该案例。在十六进制的开头添加0不会造成任何伤害,填充问题,像这样解决它

    String str = "123";
    String hex = "";
    while( ( str.length() % 2 ) != 0 )
    {
        str = "0" + str;
    }
一旦你处理好了,你就可以把所有的东西都编译成

    String str = "123";
    String hex = "";
    while( ( str.length() % 2 ) != 0 )
    {
        str = "0" + str;
    }
    System.out.println( str );
    for( int x = 0; x < str.length(); x++ )
    {
        hex += str.charAt(x);
        if( ( (x + 1) % 2) == 0 )
        {
            hex += '-';
        }
    }
    if( hex.endsWith("-") )
    {
        hex = hex.substring( 0 , hex.length() - 1);
    }
    System.out.println( hex );
    String[] hexArray = hex.split("-");
    System.out.println( java.util.Arrays.toString(hexArray) );

希望这对您的案例有所帮助???

只需在下一步更改for循环:

    for (int i = 0; i * 2 + 2 <= hex.length(); i++)
    {
        System.out.println(hexArray[i] = hex.substring(i * 2, i * 2 + 2));

    }

for(inti=0;i*2+2

    for (int i = 0; i * 2 + 2 <= hex.length(); i++)
    {
        System.out.println(hexArray[i] = hex.substring(i * 2, i * 2 + 2));

    }
for(int i=0;i*2+2您可以使用正则表达式每两个字符拆分一次

String str = "1234567";
// if the string length is not even we remove the last char.
str = (str.length()%2==0)?str: str.substring(0, str.length()-1);
// this regex matches every two chars, so it will split every two chars
String[] split = str.split("(?<=\\G..)");
for(String s: split){
 System.out.println(s); // prints 12 34 56
}
String str=“1234567”;
//如果字符串长度不是偶数,则删除最后一个字符。
str=(str.length()%2==0)?str:str.substring(0,str.length()-1);
//这个正则表达式每两个字符匹配一次,所以它将每两个字符分割一次
String[]split=str.split((?您可以使用正则表达式每两个字符拆分一次

String str = "1234567";
// if the string length is not even we remove the last char.
str = (str.length()%2==0)?str: str.substring(0, str.length()-1);
// this regex matches every two chars, so it will split every two chars
String[] split = str.split("(?<=\\G..)");
for(String s: split){
 System.out.println(s); // prints 12 34 56
}
String str=“1234567”;
//如果字符串长度不是偶数,则删除最后一个字符。
str=(str.length()%2==0)?str:str.substring(0,str.length()-1);
//这个正则表达式每两个字符匹配一次,所以它将每两个字符分割一次

String[]split=str.split(“(?你能准确地指定你的输入和预期输出吗?如果我输入
1234567
,预期输出将是12 34 56,全部存储在一个数组中,这背后的原因是什么?因为十六进制的输入是12 D687,或者只是每两个字符间隔一次?这是针对我正在处理的程序,但我只是uck在每2个字符拆分一个
hex
并将每个拆分的部分存储到一个数组
hexArray
时,您能否准确地指定您的输入与预期的输出?如果我输入
1234567
,预期的输出将是12 34 56,全部存储在一个数组中,其背后的原因是什么这是因为十六进制的输入是12D687,还是只是每两个字符间隔一次?这是我正在开发的一个程序,但我只是停留在每两个字符拆分一个
hex
,并将每个拆分的部分存储到一个数组
hexArray
你真的用正则表达式现象解决了它:),但是*******7的情况呢?哦,是的,我刚刚忘了,他想把它删除:D.回答得很好,尽管你用正则表达式现象把它解决了:),但是*******7案例呢?哦,是的,我刚刚忘了,他想把它删除:D。回答得很好,尽管非常感谢。这正是我想要的。我似乎无法理解
I
中涉及的算术-我尝试了很多组合,非常感谢。这正是我想要的。我似乎无法理解找出
i
中涉及的算法-我尝试了很多组合