Java:String []を初期化する方法?


回答:


332

エラーメッセージで示されているように、初期化 する必要がありerrorSoonますが、宣言しただけです。

String[] errorSoon;                   // <--declared statement
String[] errorSoon = new String[100]; // <--initialized statement

インデックスの設定を開始する前に、配列を初期化して、String要素正しいメモリストレージを割り当てることができるようにする必要があります。

(あなたがしたように)配列を宣言するだけの場合、String要素にはメモリが割り当てられず、への参照ハンドルのみが割り当てられerrorSoon、任意のインデックスで変数を初期化しようとするとエラーがスローされます。

補足として、String中括弧内で配列を初期化することもできます{ }

String[] errorSoon = {"Hello", "World"};

これは

String[] errorSoon = new String[2];
errorSoon[0] = "Hello";
errorSoon[1] = "World";

8
()を使用して、配列内のすべての文字列をデフォルト値でインスタンス化することはできません。5つの空の文字列の配列は、= new Array [5]( "");である必要があります。= {""、 ""、 ""、 ""、 ""}の代わりに。
Pieter De Bie 2015

forループを使用します。
トムバリス

128
String[] args = new String[]{"firstarg", "secondarg", "thirdarg"};

3
たぶん、OPの質問のタイトルが示すとおりではないかもしれませんが、String []を受け入れるパラメーターに文字列を渡そうとしていました。これが解決策です
kommradHomer 14年

新しい文字列は省略できませんか?String [] output = {""、 ""、 ""}; 私のコードで動作するようです。
Pieter De Bie 2015

2
あなたはすでにあなたの配列を初期化している、あなたがしたい場合は、それを再初期化し、あなたが行くことができないargs = {"new","array"};あなたがする必要があります args = new String[]{"new", "array"};
Darpan

26
String[] errorSoon = { "foo", "bar" };

-または-

String[] errorSoon = new String[2];
errorSoon[0] = "foo";
errorSoon[1] = "bar";

9

C ++から移行したばかりだと思います。Javaでは、データ型を初期化する必要があります(プリミティブ型以外の場合、Stringはjavaのプリミティブ型とは見なされません)、仕様に従ってそれらを使用しない場合これは、空の参照変数と同じです(C ++のコンテキストでは、ポインターのようです)。

public class StringTest {
    public static void main(String[] args) {
        String[] errorSoon = new String[100];
        errorSoon[0] = "Error, why?";
        //another approach would be direct initialization
        String[] errorsoon = {"Error , why?"};   
    }
}

9

Javaの8我々はまた、ストリームなどを利用することができます

String[] strings = Stream.of("First", "Second", "Third").toArray(String[]::new);

文字列のリスト(stringList)がすでにある場合は、次のように文字列配列に収集できます。

String[] strings = stringList.stream().toArray(String[]::new);

7
String[] errorSoon = new String[n];

nは保持する必要のある文字列の数です。

宣言で行うか、後で使用する前であれば、String []なしで行うことができます。


2
String[] arr = {"foo", "bar"};

文字列配列をメソッドに渡す場合は、次のようにします。

myFunc(arr);

または行う:

myFunc(new String[] {"foo", "bar"});

1

いつでもこのように書くことができます

String[] errorSoon = {"Hello","World"};

For (int x=0;x<errorSoon.length;x++) // in this way u create a for     loop that would like display the elements which are inside the array     errorSoon.oh errorSoon.length is the same as errorSoon<2 

{
   System.out.println(" "+errorSoon[x]); // this will output those two     words, at the top hello and world at the bottom of hello.  
}

0

文字列宣言:

String str;

文字列の初期化

String[] str=new String[3];//if we give string[2] will get Exception insted
str[0]="Tej";
str[1]="Good";
str[2]="Girl";

String str="SSN"; 

文字列で個々の文字を取得できます:

char chr=str.charAt(0);`//output will be S`

次のように個々の文字のアスキー値を取得したい場合:

System.out.println((int)chr); //output:83

次に、Ascii値をCharecter / Symbolに変換します。

int n=(int)chr;
System.out.println((char)n);//output:S


0

以下のコードを使用してサイズを初期化し、文字列の配列に空の値を設定できます

String[] row = new String[size];
Arrays.fill(row, "");
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.