Java: jak zainicjować String []?


Odpowiedzi:


331

Musisz zainicjować errorSoon , jak wskazano w komunikacie o błędzie, tylko go zadeklarowałeś .

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

Musisz zainicjować tablicę, aby mogła ona przydzielić poprawną pamięć dla Stringelementów, zanim zaczniesz ustawiać indeks.

Jeśli zadeklarujesz tylko tablicę (tak jak to zrobiłeś), nie ma przydzielonej pamięci dla Stringelementów, a jedynie uchwyt odniesienia do errorSoon, i wyrzuci błąd przy próbie inicjalizacji zmiennej w dowolnym indeksie.

Na marginesie możesz również zainicjować Stringtablicę w nawiasach klamrowych, { }ponieważ

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

co jest równoważne z

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

8
Szkoda, że ​​nie można użyć () do utworzenia wystąpienia każdego ciągu w tablicy z wartością domyślną. Tablica 5 pustych łańcuchów powinna być = new Array [5] (""); zamiast = {"", "", "", "", ""}.
Pieter De Bie,

Użyj pętli for.
Tom Burris

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

3
Może nie dokładnie to, co sugeruje tytuł pytania OP, ale próbowałem przekazać mój ciąg do parametru, który akceptuje String [], oto rozwiązanie
kommradHomer

Nie możesz pominąć nowego String btw? String [] output = {"", "", ""}; wydaje się działać w moim kodzie.
Pieter De Bie,

2
Jeśli już zainicjowałeś tablicę i chcesz ją ponownie zainicjować, nie możesz iść. args = {"new","array"};Musisz args = new String[]{"new", "array"};
Darpan

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

- lub -

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

9

Wydaje mi się, że właśnie przeprowadziłeś migrację z C ++. Cóż, w Javie musisz zainicjować typ danych (inny niż typ pierwotny, a String nie jest uważany za typ pierwotny w Javie), aby użyć ich zgodnie z ich specyfikacjami, jeśli nie jest jak pusta zmienna odniesienia (podobnie jak wskaźnik w kontekście 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

W Javie 8 możemy również korzystać ze strumieni np

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

Jeśli mamy już listę łańcuchów ( stringList), możemy zebrać w tablicę łańcuchów jako:

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

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

Gdzie n oznacza liczbę ciągów, które musi on utrzymywać.

Możesz to zrobić w deklaracji lub później bez String [], o ile jest to przed próbą ich użycia.


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

Jeśli przekazujesz tablicę ciągów do metody, wykonaj:

myFunc(arr);

lub wykonaj:

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

1

Zawsze możesz to napisać w ten sposób

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

Deklaracja strunowa:

String str;

Inicjalizacja ciągu

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"; 

Możemy uzyskać indywidualny znak w ciągu:

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

Jeśli chcę uzyskać indywidualną wartość postaci Ascii w ten sposób:

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

Teraz chcę przekonwertować wartość Ascii na Charecter / Symbol.

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

0
String[] string=new String[60];
System.out.println(string.length);

jest to inicjalizacja i uzyskanie kodu STRING LENGTH w bardzo prosty sposób dla początkujących


0

Możesz użyć poniższego kodu, aby zainicjować rozmiar i ustawić pustą wartość na tablicę ciągów

String[] row = new String[size];
Arrays.fill(row, "");
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.