Hỏi Về Phương Thức Split() Trong Java - Programming - Dạy Nhau Học Trang chủ » Cách Dùng Hàm Split Trong Java » Hỏi Về Phương Thức Split() Trong Java - Programming - Dạy Nhau Học Có thể bạn quan tâm Cách Dùng Hàm Subtotal để Tính Tổng Cách Dùng Hàm Subtotal Trong Excel Cách Dùng Hàm Sumif Có điều Kiện Cách Dùng Hàm Sumif để Tính Tổng Cách Dùng Hàm Sumif Kết Hợp Hàm If Hỏi về phương thức split() trong java programming java Hung_Hung (Hung Hung) June 23, 2020, 1:40pm #1 Hi all Mọi người cho mình hỏi sao mình có file text ntn:Nguyen Van A, Ha Noi, 131, 4, 5, 55 Sao mình đọc file rồi dùng cái split như này: String[] st = ds.split(",") xong rồi add vào arraylist.Nhưng lúc mình add vào Arraylist Staff s = new Staff(t[0], t[1], Double.parseDouble(t[2])); nếu để như này thì không sao nhưng nếu để như này sẽ bị lỗi Staff s = new Staff(t[0], t[1], Integer.parseInt(t[2])); nó báo lỗi như này Exception in thread "main" java.lang.NumberFormatException: For input string: " 1" Mong mọi người chỉ giáo với ạ.Nếu theo cách 2 thì cách fix lỗi này ntn vậy ạ SITUVN.gcd (SITUVNgcd) June 23, 2020, 12:22pm #2 Xóa khoảng trắng đầu và cuối chuỗi đi. String.trim(). Không thì cứ dùng double rồi ép kiểu về int. Mà nhờ bạn mới biết Double.parseDouble() không kiểm tra hợp lệ “gắt” bằng Integer.parseInt(). 4 Likes Hung_Hung (Hung Hung) June 23, 2020, 3:27pm #3 B ơi sao ép rồi vẫn k dc vậy p.setSo1((int)Double.parseDouble(ds[3])); còn trim mình dùng st.trim() trước khi split() vẫn k dc SITUVN.gcd (SITUVNgcd) June 23, 2020, 1:26pm #4 Có bao nhiêu cái “không được” vậy? Máy ảo Java nó bảo với bạn là “Không được!” à? Lỗi lãi gì thì nói rõ ra. Tình hình chắc giúp bạn “không được” rồi, vì mình có vài vấn để “không được”. Mà quy định thì vài chỗ cũng… “không được”. Nhiều người xem cũng muốn giúp lắm, nhưng họ “không được”. 3 Likes rogp10 (rogp10) June 23, 2020, 1:41pm #5 Khoảng cách giữa các trường không phải chỉ là dấu phẩy đâu 3 Likes Hung_Hung (Hung Hung) June 23, 2020, 1:43pm #6 khi mình add vào nó báo lỗi như thế này là sao vậy Index 1 out of bounds for length 1 Hung_Hung (Hung Hung) June 23, 2020, 1:43pm #7 ý bạn là thêm khoảng trắng nữa hay làm như thế nào HR16 (Gà Coder) June 23, 2020, 2:02pm #8 Ví dụ thế này: Nguyen Van A, Ha Noi, 131, 4, 5, 55. Khi split bằng , thì sẽ ra: ["Nguyen Van A", " Ha Noi", " 131", " 4", " 5", " 55"] Nếu bạn để ý thì sẽ thấy từ phần tử thứ 2 trở đi thì sẽ có dấu cách ở đầu. Vì sao? Đơn giản thôi, các trường(field) trong chuỗi trên được phân cách bằng , chứ không phải là , thành ra là các phần tử từ cái thứ 2 trở đi bị dư dấu cách. Nếu chuỗi trên là: Nguyen Van A,Ha Noi,131,4,5,55. Thì đoạn trên sẽ chạy đúng. Cách giải quyết vấn đề này đơn giản là thay , thành , như @rogp10 đã nói 3 Likes SITUVN.gcd (SITUVNgcd) June 23, 2020, 1:59pm #9 Bạn có chắc tất cả đều ngăn cách bằng dấu phẩy (,)? Theo như thông báo của ngoại lệ thì sau khi tách, chỉ được 1 chuỗi duy nhất (length 1). Tức là chuỗi chẳng có dấu phẩy nào để tách. 3 Likes Hung_Hung (Hung Hung) June 23, 2020, 3:28pm #10 do lúc nãy trong file chỉ có 4 dòng thôi, mà mình tạo thêm 2 dòng(khoảng trắng nên nó mới bị lỗi ấy) sau mình chạy cái này nó ra lỗi ntn nhỉ: public void show() { for(int i = 0;i < listPlayer.size(); i++ ) { System.out.println(listPlayer.get(i)); } } Exception in thread "main" java.util.IllegalFormatFlagsException: Flags = ' ,' Hung_Hung (Hung Hung) June 23, 2020, 2:10pm #11 Mình đã replace rồi xong add vào ArrayList nhưng xuất ra thì bị lỗi HR16 (Gà Coder) June 23, 2020, 2:20pm #13 Bạn thêm " ," hay ", " vậy ? 1 Like Hung_Hung (Hung Hung) June 23, 2020, 3:50pm #17 cái bạn nói cũng k hắn đúng thì “,” mình có đọc cmt mà bài bên mình cũng để file ", " mà vẫn chạy được xuất được còn cái bài trên này nó bị lỗi như trên image1280×800 128 KB Cái file text như thế này đây image1280×800 124 KB Bài khác mình cũng để thử như bài kia nó vẫn ra kết quả mặc dù dòng code đọc file không có gì thay đổi Hàm đọc file đây,mọi người xem lỗi ở đâu với ạ public void readFilePlayer(String file) { try { FileInputStream fir = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fir); BufferedReader br = new BufferedReader(isr); listPlayer.clear(); while (true) { String st = br.readLine(); if (st == null || st == " ") break; String[] ds = st.split(","); Player p = new Player(); p.setHoTen(ds[0]); p.setDiaChi(ds[1]); p.setSdt(ds[2]); p.setSo1(Double.parseDouble(ds[3])); p.setSo2(Double.parseDouble(ds[4])); p.setSo3(Double.parseDouble(ds[5])); p.setSo4(Double.parseDouble(ds[6])); p.setSo5(Double.parseDouble(ds[7])); p.setSo6(Double.parseDouble(ds[8])); p.setSo7(Double.parseDouble(ds[9])); listPlayer.add(p); } System.out.println("Them vao array list thanh cong"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } SITUVN.gcd (SITUVNgcd) June 23, 2020, 2:30pm #18 Thông báo ngoại lệ đã chỉ rõ dòng nào gây lỗi rồi đấy. Bạn có dùng đến String.format() mà chưa biết cách định dạng các tham số. Trong tham số không có nhận cờ (flag) nào là " ," hết. Có thấy nó báo Player.toString() không? Bạn sai ở đó. 4 Likes Hung_Hung (Hung Hung) June 23, 2020, 2:32pm #19 lỗi ở toString Mình ít sài String.format() nên lỗi mình đã sửa được rồi mà cái split(",") vẫn được nha Mình cảm mấy b nhiều SITUVN.gcd (SITUVNgcd) June 23, 2020, 2:37pm #20 Mình thấy dòng cuối cùng của dữ liệu bạn bỏ trống => đây là nguyên nhân chỉ tách được 1 phần tử (length 1). Bạn có thấy đoạn này ổn: Hung_Hung: if (st == null || st == " ") break; Chú ý đến st == " ": Dùng toán tử so sánh (==) để so sánh chuỗi cực kì không ổn. Bạn nên biết: dòng trống là dòng có chuỗi là "" chứ không phải " " (có 1 kí tự khoảng trắng). 3 Likes Hung_Hung (Hung Hung) June 23, 2020, 3:52pm #22 Mà cái Integer.parseInt() vẫn lỗi kìa qua bài này mình rút ra ít kinh nghiệm vì file tách có khoảng trong chứ k phải là chỉ mỗi dấu , nên có 2 cách lam 1 dùng split(",") kiểu này nhưng bắt buộc phải dung (int)Double.parse() và phải ép kiểu về int vì bên class Player mình khải bảo int 2 là như b trên đã giải thích và mình replaceAll(", ", ",") rồi split(",") như này là thành công Với thêm khi làm bài tập để ý file đầu vào không tự tiến xuống dòng file làm nó tính ‘’’’ là kí tự Bữa mình có gặp lỗi này 1 lần rồi nhưng k nhớ Giờ thì chắc nhớ muôn kiếp SITUVN.gcd (SITUVNgcd) June 23, 2020, 2:45pm #23 À, vẫn là cái trim() kia. Mình nghĩ bạn đã gọi đến trim() sai chỗ rồi. Bạn gọi trim() ngay khi dùng Integer.parseInt() chứ không phải trước khi split(). Như này nhé: Integer.parseInt(ds[3].trim()); 3 Likes Hung_Hung (Hung Hung) June 23, 2020, 2:45pm #24 Hèn gì mình chạy k có đc Thể là thêm cách nữa rồi đó Hung_Hung (Hung Hung) June 23, 2020, 2:52pm #25 Cho mình hỏi là Nguyen Van A, Ha Noi, 0123456789, 1, 23, 25, 30, 32, 25, 45 Nguyen Van B, Da Nang, 0123456788, 2, 23, 25, 30, 32, 25, 45 Nguyen Van V, Hue, 0123456787, 2, 23, 25, 30, 32, 25, 45 Nguyen Van X, HCM, 0123456786, 100, 23, 25, 30, 32, 25, 45 như file text trên mình kiếm tra xem các số 1, 23, 25, 30, 32, 25, 45 1, 23, 25, 30, 32, 25, 45 1, 23, 25, 30, 32, 25, 45 1, 23, 25, 30, 32, 25, 45 có giá trị nào lớn hơn 45 không thì mình dùng regex với phương thức matcher() để kiếm tra được k? Có cách nào làm khỏi regex được k ? mình viết regex mãi không được ? next page → DayNhauHoc's Discord Học C++ Free? Click Blog Dạy Nhau Học Tự Học Lập Trình 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao? Từ khóa » Cách Dùng Hàm Split Trong Java Split Trong Java - Techacademy Phương Thức Split() Trong String Java - Freetuts Cắt Chuỗi Bằng String Split Trong Java - Laptrinh Cắt Chuỗi Tĩnh Và động Trong Java - Deft Blog Phương Thức Chuỗi Split () Trong Java: Cách Tách Chuỗi Bằng Ví Dụ Lập Trình Java - Dùng Câu Lệnh Split để Tách Chuỗi - LADIGI Academy Hé Lộ Cách Sử Dụng Hàm Split Trong Python [Hỏi] Hàm Split - Cộng đồng Java Việt Nam - CongDongJava Sự Khác Nhau Của Bộ 3 Slice, Splice Và Split Trong Javascript - Viblo Hàm Split() Trong Python - Học Lập Trình Python - VietTuts Phương Thức Chuỗi Split () Trong Java Với Các Ví Dụ - Làm Thế Nào để ... Chuỗi.split - Bởi Dấu Phân Cách Nhiều Ký Tự? - HelpEx Cách Tách Một Chuỗi Trong Java Java: Hàm Xử Lý Chuỗi (String) | V1Study