(Java)将一串数字转换为整数数组

(Java)将一串数字转换为整数数组,java,arrays,string,parsing,Java,Arrays,String,Parsing,我试图将一个填充了16位数字的字符串转换成一个整数数组,其中每个索引在字符串中保存其各自索引的数字。我正在编写一个程序,需要对字符串中的各个整数进行数学运算,但我尝试过的所有方法似乎都不起作用。我也不能用字符分割,因为用户正在输入数字 以下是我尝试过的。 //Directly converting from char to int //(returns different values like 49 instead of 1?) //I also tried converting t

我试图将一个填充了16位数字的字符串转换成一个整数数组,其中每个索引在字符串中保存其各自索引的数字。我正在编写一个程序,需要对字符串中的各个整数进行数学运算,但我尝试过的所有方法似乎都不起作用。我也不能用字符分割,因为用户正在输入数字

以下是我尝试过的。

//Directly converting from char to int 
//(returns different values like 49 instead of 1?)    
//I also tried converting to an array of char, which worked, 
//but then when I converted
//the array of char to an array of ints, it still gave me weird numbers.

for (int count = 0; count <=15; count++)
{
   intArray[count] = UserInput.charAt(count);
}

//Converting the string to an int and then using division to grab each digit,
//but it throws the following error (perhaps it's too long?):
// "java.lang.NumberFormatException: For input string: "1234567890123456""

int varX = Integer.parseInt(UserInput);
int varY = 1;
for (count=0; count<=15; count++)
{
    intArray[count]= (varX / varY * 10);
}
//直接从char转换为int
//(返回不同的值,如49而不是1?)
//我还试着转换成一个字符数组,这很有效,
//但当我皈依时
//从char数组到int数组,它仍然给了我奇怪的数字。
对于(int count=0;count

for (int count = 0; count < userInput.length; ++count)
   intArray[count] = userInput.charAt(count)-'0';
for(int count=0;count
这个怎么样:

for (int count = 0; count < userInput.length; ++count)
   intArray[count] = userInput.charAt(count)-'0';
for(int count=0;count
我认为这里有一点让人困惑的是,int和char可以相互解释。字符的int值实际上是49

以下是一个解决方案:

for (int i = 0; i < 16; i++) {
    intArray[i] = Integer.valueOf(userInput.substring(i, i + 1));
}
for(int i=0;i<16;i++){
intArray[i]=Integer.valueOf(userInput.substring(i,i+1));
}
substring方法将字符串的一部分作为另一个字符串而不是字符返回,并且可以将其解析为int

一些提示:


  • 我改变了我认为这里有点混乱的是int和char可以相互解释。字符的int值实际上是49

    以下是一个解决方案:

    for (int i = 0; i < 16; i++) {
        intArray[i] = Integer.valueOf(userInput.substring(i, i + 1));
    }
    
    for(int i=0;i<16;i++){
    intArray[i]=Integer.valueOf(userInput.substring(i,i+1));
    }
    
    substring方法将字符串的一部分作为另一个字符串而不是字符返回,并且可以将其解析为int

    一些提示:


    • 我改了是的,这个数字(1234567890123456)对于一个整数来说太大了,它的最大值是(2^32-1)。如果你认为应该删除这个问题,请不要用1000个x来编辑它……其他用户可能会在原始问题中找到有用的信息,即使它很愚蠢。是的,这个数字(123456789012345645646)对于int来说太大了,它的最大值是(2^32-1)。如果您认为应该删除该问题,请不要用1000个x来编辑它…其他用户可能会在原始问题中找到有用的信息,即使它很愚蠢。这非常有效!非常感谢:)我能问一下更改做了什么吗?我注意到你把它改为++计数,并加了‘0’到结尾。“++”是一个超微细的性能提示,来自C++天,我认为java编译器足够好,可以识别它也能优化它。“0”使您更容易理解如何从字符转换为数字,因为“0”-“0”==0,“1”-“0”==1,等等……这非常有效!非常感谢:)我能问一下这些改变做了什么吗?我注意到你把它改为++计数,并加了‘0’到结尾。“++”是一个超微细的性能提示,来自C++天,我认为java编译器足够好,可以识别它也能优化它。“0”使人们更容易理解如何从字符转换为数字,因为“0”-“0”==0,“1”-“0”==1,等等……感谢您的解释:)我对约定很不熟悉;(我很欣赏这些建议,从现在起我会尽量保持传统!谢谢你的解释:)我对传统很不熟悉;(我很欣赏这些建议,从现在起我会尽量保持传统!