Java 数组如何将数字添加到与其值相同的位置?

Java 数组如何将数字添加到与其值相同的位置?,java,arrays,location,Java,Arrays,Location,输入是一个字符串“543210”。 代码使用charAt方法提取每个字符,并将它们依次放置在与数字值对应的特定数组位置。 charAt(0)=5表示5应该进入数组位置5。 它似乎不起作用。我甚至尝试了arrayLists public class HugeInteger { private String digits; int[] arrayToStoreTheDigits = new int[6]; public HugeInteger(String digits

输入是一个
字符串“543210”
。 代码使用
charAt
方法提取每个字符,并将它们依次放置在与数字值对应的特定数组位置。
charAt(0)=5
表示5应该进入
数组位置5
。 它似乎不起作用。我甚至尝试了
arrayLists

public class HugeInteger {

    private String digits;

    int[] arrayToStoreTheDigits = new int[6];

    public HugeInteger(String digits) {

        this.digits = digits;
        add();


    }

    public void add() {

        for (int i = 0; i < 5; i++) {
            arrayToStoreTheDigits[digits.charAt(i)] = digits.charAt(i);
            System.out.println(digits.charAt(i));
        }

    }

    public String toString() {

        return "" + arrayToStoreTheDigits + "/ " + digits.charAt(2);
    }

}

package Exercise8_17_HugeIntegers;

public class HugeIntegertester {
    // static HugeInteger huge;

    public static void main(String[] args) {

        HugeInteger huge = new HugeInteger("543210");

    System.out.println(huge.toString());

    }




}
公共类HugeInteger{
私有字符串数字;
int[]数组存储数字=新int[6];
公共HugeInteger(字符串数字){
这个。数字=数字;
添加();
}
公共无效添加(){
对于(int i=0;i<5;i++){
存储数字的数组[数字.charAt(i)]=数字.charAt(i);
System.out.println(digits.charAt(i));
}
}
公共字符串toString(){
返回“+数组存储数字+”/“+数字。字符(2);
}
}
一揽子练习8_17_HugeIntegers;
公共类HugeIntegertester{
//静态HugeInteger巨大;
公共静态void main(字符串[]args){
HugeInteger巨型=新HugeInteger(“543210”);
System.out.println(巨大的.toString());
}
}

您的问题不清楚,但我怀疑问题出在这里:

arrayToStoreTheDigits[digits.charAt(i)] = digits.charAt(i);
如果
digits.charAt(i)
是整数值为53的
'5'
,因为这是字符
'5'
的UTF-16代码单位。如果您试图提取其作为数字查看时的值,则需要使用
Character.digit
。或者,如果您真的只关心0-9,并且确信不会有其他字符,您可以直接减去
'0'

因此,您可以这样编写代码:

char c = digits.charAt(i);
arrayToStoreTheDigits[c - '0'] = c;
arrayToStoreTheDigits = new int[digits.length()];
for (int i = 0; i < arrayToStoreTheDigits.length; i++)
{
    // TODO: Digit validation
    arrayToStoreTheDigits[i] = digits.charAt(i) - '0';
}
请注意,由于此初始化:

int[] arrayToStoreTheDigits = new int[6];
。。。如果您的代码看到
'6'
或更大的值,则代码将失败

此外,如果要使用
数字中的所有字符,则循环应为:

for (int i = 0; i < digits.length(); i++)

因此,在传入
“543210”
之后,您将拥有一个
{5,4,3,2,1,0}
数组。这是有用的信息。

您的问题不清楚,但我怀疑问题出在这里:

arrayToStoreTheDigits[digits.charAt(i)] = digits.charAt(i);
如果
digits.charAt(i)
是整数值为53的
'5'
,因为这是字符
'5'
的UTF-16代码单位。如果您试图提取其作为数字查看时的值,则需要使用
Character.digit
。或者,如果您真的只关心0-9,并且确信不会有其他字符,您可以直接减去
'0'

因此,您可以这样编写代码:

char c = digits.charAt(i);
arrayToStoreTheDigits[c - '0'] = c;
arrayToStoreTheDigits = new int[digits.length()];
for (int i = 0; i < arrayToStoreTheDigits.length; i++)
{
    // TODO: Digit validation
    arrayToStoreTheDigits[i] = digits.charAt(i) - '0';
}
请注意,由于此初始化:

int[] arrayToStoreTheDigits = new int[6];
。。。如果您的代码看到
'6'
或更大的值,则代码将失败

此外,如果要使用
数字中的所有字符,则循环应为:

for (int i = 0; i < digits.length(); i++)

因此,在传入
“543210”
之后,您将拥有一个
{5,4,3,2,1,0}
数组。这是有用的信息。

循环存在问题:

for (int i = 0; i < 5; i++) {  // condition shoule be i < 6
    // arrayToStoreTheDigits[digits.charAt(i)] = digits.charAt(i); // convert String to integer
    // shoule be
    arrayToStoreTheDigits[Integer.parseInt(digits.charAt(i))] = Integer.parseInt(digits.charAt(i));
    System.out.println(digits.charAt(i));
}
for(inti=0;i<5;i++){//条件应为i<6
//arrayToStoreTheDigits[digits.charAt(i)]=digits.charAt(i);//将字符串转换为整数
//应该是
数组存储数字[Integer.parseInt(digits.charAt(i))]=Integer.parseInt(digits.charAt(i));
System.out.println(digits.charAt(i));
}

您的循环存在问题:

for (int i = 0; i < 5; i++) {  // condition shoule be i < 6
    // arrayToStoreTheDigits[digits.charAt(i)] = digits.charAt(i); // convert String to integer
    // shoule be
    arrayToStoreTheDigits[Integer.parseInt(digits.charAt(i))] = Integer.parseInt(digits.charAt(i));
    System.out.println(digits.charAt(i));
}
for(inti=0;i<5;i++){//条件应为i<6
//arrayToStoreTheDigits[digits.charAt(i)]=digits.charAt(i);//将字符串转换为整数
//应该是
数组存储数字[Integer.parseInt(digits.charAt(i))]=Integer.parseInt(digits.charAt(i));
System.out.println(digits.charAt(i));
}

使用
ArrayList
不是一个选项?您想写下它似乎不起作用吗?怎么了?我的评论是它不起作用。抱歉,我键入错误。使用
ArrayList
不是一个选项?是否要编写它似乎不起作用?怎么了?我的评论是它不起作用。对不起,我打错了。是的,UTF-16代码,这是我一直得到的。我试试这个字符。数字。谢谢。是的,UTF-16代码,这是我一直得到的。我试试这个字符。数字。谢谢,它不起作用。但我理解你的观点,因为我试图实现一个解析器。它不起作用;)。但我理解你的观点,因为我试图实现一个解析器。