để mình gợi ý cho bạn viết tiếp hàm f2,. bạn tạo 1 biến lớp ( thuộc tính) là private static String [] strings;
ở hàm f1 thay vì bạn khai báo mảng string mới thì bạn viết strings = s.split(" "); như vậy là bạn đã lưu lại chuỗi sau khi cắt, tránh việc bạn lại viết lại hàm cắt chuỗi ở hàm f2. bạn để ý hàm f2 và hàm f1 của bạn có 2 vòng for chẳng khác gì nhau không, vậy nghĩ xem làm thế nào tránh lặp code. mục đích của bạn là thao tác với các từ có nguyên âm đầu đúng không, nhìn xem ở f1 bạn đã tìm ra những từ đó r, vậy sao k lưu kết qura đó lại để làm tiếp ở f2. vậy cần lưu cái gì? cái cân lưu chính là chỉ số của từ đó trong mảng strings , và lưu vào đâu? bạn có thể lưu nó vào 1 ArrayList, trong khối if ở f1 của bạn chỉ cần thêm 1 dòng arrayList.add(i) , nếu chưa biết thì bạn đọc qua về cái này, có cũng rất đơn giản. chú ý biến ArrayList ở đây cũng là biến lớp như strings để có thể dùng lại được.
vậy việc cần làm ở f2 của bạn bây giờ rất đơn giản bạn dùng 1 vòng for ( int i = 0 ; i < arrayList.size(): i++)
trong vòng for này bạn lấy ra từ cần xử lí bằng cách lấy ra chỉ số của nó bằng cách. int index = (int)arrayList.get(i). có được chỉ số rồi bạn dùng nó để tham chiếu đến mảng strings để lấy ra từ đó
có được từ đó rồi thì bạn cần chuyển từ đó sang mảng các kí tự bằng hàm toCharArray (); bây giời bạn tham chiếu đến phần tử đầu tiên của mảng kí tự này, bạn chuyển nó thành chữ hoa bằng cách ép kí tự này về class Charactor, sau đó dùng hàm isUpperCase() để kiểm tra xem nó là chữ hoa không, nếu là chữ hoa thì bạn dùng hàm toUpperCase để chuyển sang chữ hoa, sau đó bạn chuyển mảng char sang chuỗi bằng cách strings[ index] = new String(mảng kí tự sau khi đã xử lí); sau đó thì nối tất cả lại
mình mô tả lại như thế, bạn cứ thử cố làm xem, k dc tối mình rảnh sẽ code hoàn chỉnh cho bạn coi