2010-04-01 66 views
136

LỗiJava: cách khởi tạo String []?

% javac StringTest.java 
StringTest.java:4: variable errorSoon might not have been initialized 
     errorSoon[0] = "Error, why?"; 

public class StringTest { 
     public static void main(String[] args) { 
       String[] errorSoon; 
       errorSoon[0] = "Error, why?"; 
     } 
} 

Trả lời

229

Bạn cần phải initializeerrorSoon, như được chỉ ra bởi các thông báo lỗi, bạn chỉ có declared nó.

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

Bạn cần phải khởi tạo mảng để nó có thể phân bổ bộ nhớ lưu trữ chính xác cho các String yếu tố trước bạn có thể bắt đầu thiết lập các chỉ số.

Nếu bạn chỉtuyên bố mảng (như bạn đã làm) không có bộ nhớ phân bổ cho các String yếu tố, nhưng chỉ có một tay cầm tài liệu tham khảo để errorSoon, và sẽ ném ra một lỗi khi bạn cố gắng khởi tạo một biến tại bất kỳ chỉ số .

Là một mặt lưu ý, bạn cũng có thể khởi tạo String mảng bên trong niềng răng, { } như vậy,

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

tương đương với

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

Đó là một pitty rằng bạn không thể sử dụng() để nhanh chóng mỗi String trong mảng của bạn với một giá trị mặc định. Một mảng gồm 5 chuỗi rỗng phải = new Array [5] (""); thay vì = {"", "", "", "", ""}. –

+0

Sử dụng vòng lặp for. –

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

Với n là bao nhiêu dây nó cần phải giữ.

Bạn có thể thực hiện điều đó trong tuyên bố hoặc thực hiện việc đó mà không cần chuỗi [] sau này, miễn là trước khi bạn thử sử dụng chúng.

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

- hoặc -

String[] errorSoon = new String[2]; 
errorSoon[0] = "foo"; 
errorSoon[1] = "bar"; 
104
String[] args = new String[]{"firstarg", "secondarg", "thirdarg"}; 
+2

Có lẽ không chính xác những gì OPs câu hỏi tiêu đề cho thấy nhưng tôi đã cố gắng để vượt qua chuỗi của tôi để tham số chấp nhận String [], đây là giải pháp – kommradHomer

+0

Bạn không thể ommit String btw mới? Chuỗi [] đầu ra = {"", "", ""}; dường như làm việc trong mã của tôi. –

+2

Nếu bạn đã khởi tạo mảng của bạn và bạn muốn khởi tạo lại nó, bạn không thể đi 'args = {" new "," array "};' Bạn sẽ phải 'args = new String [] {" new "," array "};' – Darpan

1

Bạn luôn có thể viết nó như thế này

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. 
} 
9

Tôi tin rằng bạn chỉ cần di chuyển từ C++, Vâng trong java bạn phải khởi tạo một kiểu dữ liệu (các kiểu nguyên thủy khác và sau đó là String không được coi là kiểu nguyên thủy trong java) để sử dụng chúng theo các đặc tả của chúng. nếu bạn không thì nó giống như một biến tham chiếu rỗng (giống như một con trỏ trong ngữ cảnh của 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?"}; 
    } 
} 
0

Tuyên bố String:

String str; 

Chuỗi khởi

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

Chúng tôi có thể nhận được nhân vật cá nhân trong String:

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

Nếu tôi muốn để có được giá trị nhân vật Ascii cá nhân như thế này:

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

Bây giờ tôi muốn chuyển đổi giá trị Ascii vào Charecter/Symbol.

int n=(int)chr; 
System.out.println((char)n);//output:S 
0
String[] string=new String[60]; 
System.out.println(string.length); 

nó là khởi tạo và nhận được mã LENGTH STRING theo cách rất đơn giản cho người mới bắt đầu

2

Trong Java 8 chúng tôi cũng có thể tận dụng các dòng ví dụ

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

Trong trường hợp chúng tôi đã có một danh sách các chuỗi (stringList) sau đó chúng ta có thể thu thập vào mảng chuỗi như:

String[] strings = stringList.stream().toArray(String[]::new); 
Các vấn đề liên quan