Java 数组的自然数

Java 数组的自然数,java,string,compare,instantiation,string-comparison,Java,String,Compare,Instantiation,String Comparison,我想将initData中的数字存储为数组数据中的整数。我试过了,但没用 public class NaturalNumber { int[] data = {}; private int toInt(char c) { return (int)c - (int)'0';////converses a digit character to its integer value } public NaturalNumber(字符串initData) { int[]数据=新的int[10]

我想将
initData
中的数字存储为数组数据中的整数。我试过了,但没用

public class NaturalNumber 
{
int[] data = {};

private int toInt(char c)
{
    return (int)c - (int)'0';////converses a digit character to its integer value
}
public NaturalNumber(字符串initData)
{
int[]数据=新的int[10];
对于(int i=0;i,
NaturalNumber(String initData)
构造函数存在索引越界的问题,例如:

public NaturalNumber(String initData)
{
    int[]data =new int[10];
    for(int i=0;i<10;i++)
    data[i] =Character.digit(initData.charAt(i), 10);}


/**compare this to other number and find out which one bigger or are they equal*/

public int compareTo(NaturalNumber other)
{

}


/**I want to set digitIndex between 0 and data.length - 1 and value to between 0 and 9*/


public void setDigit(int digitIndex, int value)
{
    digitIndex=Math.max(0,data.length-1);
    value=Math.max(0,9);
}
公共静态类自然数{
私有int[]数据;
公共自然数(字符串initData){
final int length=initData.length();
data=new int[length];//现在我们应该有足够的空间了
for(int i=0;i9){
返回;
}
如果(索引<0 | |索引>data.length-1){
返回;
}
数据[索引]=值;
}
}

@doge47我注意到我在
构造函数中有一些输入错误,我已经用修复的错误更新了我的答案。在构造函数中,initData是一个包含此自然数数字的字符串,因此我必须实例化数据数组以更正大小,并将initData中的数字作为整数存储在数组数据中。构造函数应该使用其setter将每个数字设置为,setter的验证为digitIndex必须介于0和data之间。长度-1和值必须介于0和9之间,否则setter不应对数据数组执行任何操作。@doge47我已更新了我的答案,以解决您提到的更改。请查看该答案,如果您有任何其他问题,请告诉我。
public static class NaturalNumber {

    private int[] data;

    public NaturalNumber(String initData) {
        final int length = initData.length();
        data = new int[length]; // now we should have enough space
        for(int i = 0; i < length; i++) {
            // Also there won't be any mismatch in size between 
            // initData and the maximum value for i so you don't
            // risk getting a IndexOutOfBoundsException
            data[i] = toInt(initData.charAt(i));
        }
    }

    private static int toInt(char c)
    {
        return (int)c - (int)'0'; // converts a digit character to its integer value
    }

    // possible implementation of compareTo
    public int compareTo(NaturalNumber that) {
        final int length = this.data.length;
        if(length != that.data.length) {
            return Integer.compare(length, that.data.length);
        }

        for(int i = 0; i < length; i++) {
            if(this.data[i] != that.data[i]) {
                return Integer.compare(this.data[i], that.data[i]);
            }
        }
        return 0;
    }

    public void setDigit(int index, int value) {
        if(value < 0 || value > 9) {
            return;
        }
        if(index < 0 || index > data.length - 1) {
            return;
        }
        data[index] = value;
    }
}