2011-10-16 12 views
20

Tôi đã cố gắng tạo một chiếc đồng hồ mà người dùng có thể đặt. Tôi muốn người dùng được đặt câu hỏi và họ trả lời bằng những từ như có hoặc không. Tôi đã thực hiện nó cho những thứ không thay đổi bằng cách sử dụng mã này, chẳng hạn như người dùng có muốn hiển thị giây hay không, nhưng nó không hoạt động tốt khi tôi muốn chuỗi thay đổi, nói từ AM đến PM khi giờ vượt quá 12. Dưới đây là những gì tôi đang sử dụng:Làm thế nào để bạn kiểm tra xem một chuỗi không bằng một đối tượng hoặc giá trị chuỗi khác trong java?

System.out.println("AM or PM?"); 
    Scanner TimeOfDayQ = new Scanner(System.in); 
    TimeOfDayStringQ = TimeOfDayQ.next(); 

    if(!TimeOfDayStringQ.equals("AM") || !TimeOfDayStringQ.equals("PM")) { 
     System.out.println("Sorry, incorrect input."); 
     System.exit(1); 
    } 

    ... 

    if(Hours == 13){ 
     if (TimeOfDayStringQ.equals("AM")) { 
      TimeOfDayStringQ.equals("PM"); 
     } else { 
      TimeOfDayStringQ.equals("AM"); 
     } 
       Hours = 1; 
     } 
    } 

Mỗi lần tôi nhập bất cứ điều gì khi nó nhắc nhở tôi, cho dù tôi đặt AM, PM, hay nói cách khác, nó mang lại cho tôi những lỗi tôi đã viết và sau đó thoát . Khi tôi loại bỏ các phần của mã mà chấm dứt chương trình với lỗi nó sẽ không thay đổi chuỗi từ AM sang PM khi giờ bằng 13. Cảm ơn bạn đã giúp đỡ của bạn, nó được nhiều đánh giá cao.

+3

Là một quan sát, để tránh nhầm lẫn, các biến java nên bắt đầu với chữ thường. –

Trả lời

25

Thay đổi mã của bạn để:

System.out.println("AM or PM?"); 
Scanner TimeOfDayQ = new Scanner(System.in); 
TimeOfDayStringQ = TimeOfDayQ.next(); 

if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) { // <-- 
    System.out.println("Sorry, incorrect input."); 
    System.exit(1); 
} 

... 

if(Hours == 13){ 
    if (TimeOfDayStringQ.equals("AM")) { 
     TimeOfDayStringQ = "PM"; // <-- 
    } else { 
     TimeOfDayStringQ = "AM"; // <-- 
    } 
      Hours = 1; 
    } 
} 
13

bạn sẽ muốn sử dụng & & để thấy rằng nó không phải là tương đương với "AM" VÀ không bằng "PM"

if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) { 
    System.out.println("Sorry, incorrect input."); 
    System.exit(1); 
} 

phải rõ ràng bạn cũng có thể làm

if(!(TimeOfDayStringQ.equals("AM") || TimeOfDayStringQ.equals("PM"))){ 
    System.out.println("Sorry, incorrect input."); 
    System.exit(1); 
} 

để có cụm từ not (one or the other) trong mã (nhớ dấu ngoặc (im lặng)

+0

Cảm ơn bạn rất nhiều. Tôi là loại mới với java và đó có lẽ là lý do tại sao tôi đã thực hiện một lỗi đơn giản như vậy. Cảm ơn nhiều. – Pillager225

1

Thay đổi || đến & & vì vậy nó sẽ chỉ thoát ra nếu câu trả lời là KHÔNG "AM" cũng như "PM".