30/09/2018, 21:21
Kiểm tra các chữ cái đầu của mỗi chuỗi trong java
cho e hỏi java ,bây j e muốn xét xem chữ cái đầu tiên của 1 từ e dụng charAt ạ .
Đề bài của e là nhập 1 chuỗi rồi xem chữ cái đầu của mỗi chuỗi có viết hoa không
em tách ra mỗi từ rồi , nhưng e viết code nó cứ có dấu ! và gạch chân đỏ
int cnt = 0;
s = s.trim();
s = s.replaceAll("\s+", " ");
String[] t = s.split(" ");
for (int i = 0; i < t.length; i++) {
if(t[i].charAt(0)="a"){
cnt++;
}
}
return cnt;
Bài liên quan
mình góp ý thế này, thứ nhất là về cách đặt tên biến của bạn, bạn rất không nên đặt như thế. nó làm cho code của bạn nnhư kiểu cchỉ viết cho mình bạn hiểu. tên biến bạn nên đặt là danh từ và có tính gợi nhớ. ví dụ chuỗi nhập vào thì bạn dặt là string chứ “s” là wtf? biến đếm thì đặt là count chứ cnt là wtf? String[] t là cái gì?? mình đảm bảo bạn đặt thế thì chẳng ai buồn đọc code của bạn đâu. thứ hai là bạn nên để ý sử dụng các khoảng trắng ví dụ charAt(0)=‘a’ bạn nên viết thành charAt(0) = ‘a’. code của bạn so sánh char với string “a” là sai nhé, so sánh kí tự phải là ‘a’ và dùng == chứ không phải =
phần bài giải mình thấy code của bạn có vẻ không đúng và logic cho lắm, mình code đoạn này bạn chạy thử xem sao
Hàm này mình thấy sai sai
Thế giả dụ mình nhập …123ABC thì nó in ra gì ta @@
sai hay k chạy thử r biết bạn, bạn chủ top nói kiểm tra " chữ cái" của từ nhé, làm gì có từ nào có số?, còn nếu bạn muốn bao quát hết tất cả các case đầu vào thì cứ tuy chỉnh code theo ý bạn thôi. ví dụ bạn muốn kiểm tra thêm cả trường hợp có số 123ABC thì xử lí thêm 1 case input chứa số nữa là dc mà
cái này e làm ra rồi , nhưng lại mặc nữa là bây h e muốn viết hoa chữ cái đấu những tử là chữ a còn thì để nguyên
VD : adfs aotru bkj
Adfs Aotru bkj
bạn thử cố gắng nghĩ cách giải quyết chưa, nếu thật sự nghĩ nát óc r mà không ra thì mới nên hỏi, như thế mới có tư duy được.
mình đang nghĩ ,
ý tường mình là lúc tách ra rồi , xong cho nó đk nếu thỏa mãn thì viết hoa chữ cái đầu cái mảnng đấy rồi nối nó lại , nhưng mà …
cách đó cũng dc , bạn mắc chỗ nào,
nhưng mà mình viết code để thể hiện nó toàn bị lỗi
bạn đưa code bạn lên đây mình xem cho
// ======= DO NOT EDIT MAIN FUNCTION ============
import java.io.*;
import java.util.StringTokenizer;
class Main {
}
chỗ f2 mình cần code nhé
mình xem qua thì các hàm trong code của bạn không thực hiện các yêu cầu như bạn nói. và hàm main là bài tập cho sẵn và yêu cầu xây dựng theo phải không. nếu bạn cần lời giải chính xác thì phải đưa đủ đề bài lên
cái mình nói chỉ để vd thôi
You have main function which is saved on folder named Q11 already. Use this function to test all your operations in this question, DO NOT EDIT ANY CODE in main function. You can add more operations/classes/interfaces to be able to answer the below questions.
Complete the following function in the class Main.
• int f1(String s) – count the number of words in s that contain first charerter is a vowel character. Given a string s, calculate and count the number of words in s that contain first charecter is a vowel character, the vowel character can be a capital or lower character. May be there are more than one space character in s and first or last character is space.
• void f2(String s)- display words in s that contain first character is a vowel charactor. After that to upper first charecters of those words in s and display s.
character, the vowel character can be a capital or lower character. May be there are
more than one space character in s and first or last character is space.
The program output might look something like:
Enter a string: abc aabb ddaa IAbb eeee
Out:
Number of words with first charactor is a vowel : 4
Display:
abc
aabb
iAbb
eeee
After to upper : s = Abc Aabb ddaa IAbb Eeee
theo như code của bạn thì ơr hàm f2 bạn chỉ mới dừng lại ở việc kiểm tra xem từ có có phải có chữ cái đầu là nguyên âm không chứ chưa thực hiện việc chuyển đổi, như vậy làm sao ra kết quả được
MÌNH viết toàn lỗi mình xóa đi rồi
để 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