Announcement

Collapse
No announcement yet.

Lệnh while chạy khó hiểu trong java

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Lệnh while chạy khó hiểu trong java

    Như tiêu đề 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]
    Ảnh console :


    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:

  • #2
    2 chỗ :
    + compare string ko xài == hoặc != , xài equalsIgnoreCase
    + while(job.equalsIgnoreCase("Giao vien") || job.equalsIgnoreCase("Hoc sinh")) : luôn đúng thì nó nhảy xuống dưới phải rồi :shot:
    => while(!job.equalsIgnoreCase("Giao vien") && !job.equalsIgnoreCase("Hoc sinh")) :shame:


    anh xài cách này :
    Code:
    BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in));
            System.out.print("Input :");
            int count=Integer.parseInt(bufferedReader.readLine());
            String job;
            for (int i = 0; i < count; i++) {
                System.out.println("Job :");
                job=bufferedReader.readLine();
                while(!job.equalsIgnoreCase("Giao vien") && !job.equalsIgnoreCase("Hoc sinh")){
                    System.out.println("Sai nhập lại 'Giao vien' hoặc 'Học sinh'");
                    job=bufferedReader.readLine();
                }
            }
    Last edited by 11520616; 18-01-2015, 01:51.

    Comment

    LHQC

    Collapse
    Working...
    X