1

私はintに変換したい文字列の配列を持っています。非常にシンプルで簡単なコードは次のとおりです。

public static void main(String[] args) {
    String myarray[]=readfile("[pathtothefile]");

     int mynums[] = new int[myarray.length];
    for (int i=0;i<myarray.length;i++){
        mynums[i]=Integer.parseInt(myarray[i]);
    }
    System.out.print(Arrays.toString(mynums));  
}

しかし、ここでの問題は、「mynums」を次のように初期化した場合です。mynums[]=null; 次の行でNullPointerExceptionを取得します。

"mynums[i]=Integer.parseInt(myarray[i]);" 

それを解決するために私がしなければならないことは

int mynums[] = new int[myarray.length]; 

ここで誰かがそれが起こる理由を説明しましたが、今すぐ初期化する方法がわかりません! つまり、アレイがどれだけ大きくなるかわからないことがあり、それを初期化したいだけです。それは可能ですか?

4

5 に答える 5

1

Java では、すべてが舞台裏のポインターです。したがって、mynums[]=null を実行すると、null を指しています。では、null[i] とは何ですか? それがあなたのNPEの由来です。または、配列を指す場合、実際には配列の i 番目の要素にアクセスしています。

于 2013-06-05T19:39:05.030 に答える
0

これがアイデアです。何かを null として初期化するときは、それが存在することを宣言しているだけです。たとえば...犬がいると言ったが、それについては何も言わなかった場合...どこにいるのか、どのくらいの身長なのか、何歳なのか、オス/メスなどは言わなかった.. . プロパティやアクセス方法については何も説明せず、犬がいるということだけを話しました (議論のために、その名前は Array です)。アレイという名前の犬がいて、それだけです。

通常、配列はサイズが既知であり、一般にデータが不変であることが意図されている場合に使用されます。変更する予定のデータについては、ArrayList などを使用する必要があります。これらは自由に変更することを意図しています。気まぐれで要素を追加/削除できます。ArrayList の詳細については、上記のリンクを参照してください。

さて、あなたのコードについては:

public static void main(String[] args) {

    ArrayList<int> myInts = new ArrayList<int>();
      // define a new null arraylist of integers.

    // I'm going to assume that readfile() is a way for you get the file
    // into myarray. I'm not quite sure why you would need the [], but I'll
    // leave it.

    String myarray[] = readfile("[pathtothefile]");

    for (int i = 0; i < myarray.length; i++) {
             //adds the value you've specifed as an integer to the arraylist.
        myInts.add(Integer.parseInt(myarray[i])); 
 }

    for (int i = 0; i < myInts.size(); i++) {
            //print the integers
        System.out.print(Integer.toString(myInts.get(i)));
    }

}
于 2013-06-05T20:06:35.700 に答える