2016-04-04 21 views
5

Tôi đã xem đoạn mã mà tôi đã gặp phải với Double.valueOf(line.split(",")[1]) Tôi quen thuộc với Double.valueOf() và vấn đề của tôi là hiểu [1] có ý nghĩa gì trong câu. Tài liệu được tìm kiếm không tìm thấy bất kỳ thứ gì.Line.split (",") [1] có nghĩa là gì [Java]?

while ((line = reader.readLine()) != null) 
       double crtValue = Double.valueOf(line.split(",")[1]); 
+4

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html – Reimeus

+2

'dòng # split' trả về một mảng,' [1] 'acceses phần tử thứ hai của mảng được trả về. – SomeJavaGuy

+0

@KevinEsche uhm, không, yếu tố thứ 2; trừ khi bạn có nghĩa là phần tử ở chỉ mục 0 là phần tử thứ 0 – fge

Trả lời

9

Điều này có nghĩa là line là một chuỗi số được phân cách bằng dấu phẩy.
ví dụ: "12.34,45.0,67.1"

line.split(",") trả về một chuỗi các chuỗi.
ví dụ: {"12.34","45.0","67.1"}

line.split(",")[1] trả về (vì chỉ số bắt đầu từ 0) mục 2 của mảng.
ví dụ: 45.0

2

Mã của bạn cố gắng nhận được giá trị double thứ hai từ reader.readLine().


  1. String numbers = "1.21,2.13,3.56,4.0,5";
  2. String[] array = numbers.split(","); tách dòng đầu vào bởi commma
  3. String second = array[1]; được những yếu tố thứ hai từ mảng. Số lượng mảng Java bắt đầu từ chỉ số 0.
  4. double crtValue = Double.valueOf(second); chuyển đổi String để double

Đừng quên về NumberFormatException có thể được ném nếu chuỗi không chứa được phân tách double.

3

Có nghĩa là line là một chuỗi bắt đầu bằng số a,b trong đó b thực ra là một số.

crtValue là giá trị double của b.

3

Java public String[] split(String regex)

Tách chuỗi này xung quanh các trận đấu của các biểu thức chính quy định.

Returns: mảng chuỗi tính bằng cách chia tách chuỗi này xung quanh các trận đấu của các biểu thức chính quy cho

Vì vậy, các [1] được mục thứ 2 của tìm thấy mảng trong String[].