Java: як ініціалізувати String []?


Відповіді:


331

Вам потрібно ініціалізувати 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
Це непростий шлях, який ви не можете використовувати () для екземпляра кожної String у своєму масиві зі значенням за замовчуванням. Масив з 5 порожніх рядків повинен бути = новий масив [5] (""); замість = {"", "", "", "", ""}.
Пітер Де Бі

Використовуйте цикл.
Том Берріс

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

3
Можливо, не саме те, що пропонує заголовок питання OPs, але я намагався передати свій рядок параметру, який приймає String [], це рішення
kommradHomer

Ви не можете опустити новий String btw? String [] вихід = {"", "", ""}; здається, працює в моєму коді.
Пітер Де Бі

2
Якщо ви вже ініціалізували свій масив і хочете його повторно ініціалізувати, ви не можете піти. args = {"new","array"};Вам доведеться args = new String[]{"new", "array"};
Дарпан


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

Маючи п ять, скільки струн потрібно провести.

Ви можете зробити це в декларації або зробити це без 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"; 

Ми можемо отримати індивідуальний персонаж у String:

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

Якщо я хочу отримати індивідуальне значення Ascii, як це:

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

Тепер я хочу перетворити значення Ascii в Charecter / Symbol.

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


0

Ви можете використовувати код нижче для ініціалізації розміру та встановлення порожнього значення для масиву Strings

String[] row = new String[size];
Arrays.fill(row, "");
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.