-1

ここを取得していArrayIndexOutOfBoundExceptionます。何が欠けていますか?

私のコードは以下の通りです:

public class Exercise {

    public static double[] strfloat(String str){
        double[] f = new double[] {};
        String[] st = new String[] {};
        st= str.split(" "); 
        for(int i = 0; i < st.length; i++){ 
            System.out.println(st[i]); 
            f[i] = Double.parseDouble(st[i]);
            System.out.println(f[i]);
        }
        return f;
    }

    public static void main(String[] args) {
        String str = "1.99999996e-002 7.49999983e-003 0. 1.75000001e-002 9.99999978e-003";
        double[] retstr = strfloat(str);

        for(int i = 0; i < retstr.length; i++){
            System.out.println(retstr[i] + " ");
        }
    }
4

7 に答える 7

2

これを試してください:

String[] st = str.split(" ");
double[] f = new double[st.length];

fこのようにして、配列を文字列チャンクのサイズに初期化します。

于 2013-05-24T13:26:07.113 に答える
0

double array を初期化する必要がありますf。これを試して。

double[] f = new double[st.length].

あなたのコードで:

public static double[] strfloat(String str) {
        String[] st = new String[]{};
        st = str.split(" ");
        double[] f = new double[st.length];
        for (int i = 0; i < st.length; i++) {
            System.out.println(st[i]);
            f[i] = Double.parseDouble(st[i]);
            System.out.println(f[i]);
        }
        return f;
    }

    public static void main(String[] args) {

        String str = "1.99999996e-002 7.49999983e-003 0. 1.75000001e-002 9.99999978e-003";
        double[] retstr = strfloat(str);
        for (int i = 0; i < retstr.length; i++) {
            System.out.println(retstr[i] + " ");
        }
    }
于 2013-05-24T13:32:13.923 に答える
0

ここで空の配列を作成しています:

double[] f = new double[] {};

分割後、st.length を使用して配列を作成します。そうすれば、希望のサイズになります。

于 2013-05-24T13:25:55.013 に答える
0

arrayoutofboundexception がここにあります。私は何が欠けていますか?

あなたは終わりを逃しfます...

double[] f = new double[] {};

[...]
for(int i=0; i<st.length; i++){
    [...]
    f[i] = Double.parseDouble(st[i]);

f の長さは 0 であるため、f[0] にアクセスしようとすると、その長さを超えます

コードを少し再配置します。

String[] st = st= str.split(" ");
double[] f = new double[st.length];
于 2013-05-24T13:27:37.617 に答える