- String là object nên toán tử ==, != sẽ tham chiếu tới vị trí ô nhớ của 2 biến. Do 2 biến khác nhau nên sẽ có 2 ô nhớ khác nhau nên kết quả khi dùng ==, != sẽ luôn là false.
- Lệnh equals để so sánh giá trị và nên dùng "Giao Vien".equals(job) thay vì job.equals("Giao Vien") để tránh die chương trình khi job=null
=> Bạn nên học lý thuyết Java core trước rồi làm bài tập, thì sẽ hiểu được ngọn nguồn. Cầm đèn chạy trước otô kiểu này khi phát sinh lỗi debug cả ngày cũng ko hiểu tại sao :happy:
Announcement
Collapse
No announcement yet.
Lệnh while chạy khó hiểu trong java
Collapse
X
-
Originally posted by myonline84Chính xác.
"Thứ hai là bạn so sánh chuỗi không đúng, bạn cần dùng .equals để so sánh chuỗi chứ không phải dùng "!=". Lý do theo mình hiểu thì bạn đang so sánh 1 đối tượng với 1 chuỗi nên phải dùng .equals "
Phát biểu zầy cũng gọi là chính xác ak. Cho hỏi cái nào là chuỗi cái nào là đối tượng và sách ở đâu dạy so sánh đối tượng với chuỗi thì dùng equals thế.
sorry nếu nghĩ sai ,anh chỉ code asp.net thôi.
Leave a comment:
-
Mình sửa lại thành vậy, và chạy theo đc đúng ý của bạn
Code:public static void main(String[] args) { Scanner in = new Scanner(System.in); int count; String job; String temp; System.out.print("Nhập số lượng cần nhập thông tin: "); count = in.nextInt(); temp = in.nextLine(); for(int i = 0; i < count; i++) { System.out.println("Ban la giao vien hay hoc sinh: go 'Giao vien' hoac 'Hoc sinh'"); job = in.nextLine(); while(!job.equals("Giao vien") && !job.equals("Hoc sinh")) { System.out.println("Sai nhập lại 'Giao vien' hoặc 'Học sinh'"); job = in.nextLine(); } }
_Thứ hai là bạn so sánh chuỗi không đúng, bạn cần dùng .equals để so sánh chuỗi chứ không phải dùng "!=". Lý do theo mình hiểu thì bạn đang so sánh 1 đối tượng với 1 chuỗi nên phải dùng .equals như mình, còn "!=" hoặc "==" chỉ để so sánh nếu bạn so sánh 2 chuỗi với nhau, vd như while("giao vien" == "giao vien"). :happy:Last edited by 12520795; 18-01-2015, 15:11.
Leave a comment:
-
nếu như dùng || thì nhập "giao vien" hay "sinh vien" thì đk vẫn đúng mà. nên nó ko thoát vòng while
phải sửa lại dùng &&.
Leave a comment:
-
Lệnh while chạy khó hiểu trong java
Em đang tập tành thử với java đụng tới dòng while thì thấy chạy khá khó hiểu.
Code:public static void main(String[] args) throws IOException {Scanner in = new Scanner(System.in); int count; String job; String temp; System.out.print("Nhập số lượng cần nhập thông tin: "); count = in.nextInt(); [B][SIZE=3]temp = in.nextLine();[/SIZE][/B] for(int i = 0; i < count; i++) { System.out.println("Ban la giao vien hay hoc sinh: go 'Giao vien' hoac 'Hoc sinh'"); job = in.nextLine(); [B][SIZE=3]while(job != "Giao vien" || job != "Hoc sinh") { System.out.println("Sai nhập lại 'Giao vien' hoặc 'Học sinh'"); job = in.nextLine(); }[/SIZE][/B]
Khi nhập đúng chữ "Giao vien" vẫn không thoát được vòng while.
Không biết là có phải do String không, nhưng em để lệnh so sánh thử System.out.println(job.equals("Giao vien")) thì nó vẫn ra true khi nhập "Giao vien" :nose:
Một số thắc mắc phụ:
- Trong java nếu mình không để lệnh in ra trước Scanner (System.out.print("")) một biến nào đó thì khi run nó cũng không thấy chạy?:beatbrick:
- Có lệnh xóa buffer như flush(stdin) cho java hay không? Ở trên em dùng đở biến temp :happy:
Ai giúp em với :surrender:Tags: None
Leave a comment: