2012-12-08 31 views
18

Trong kinh nghiệm 1 tháng tôi đã có với bất kỳ ngôn ngữ lập trình, tôi đã giả định rằng switchcase điều kiện sẽ chấp nhận bất cứ điều gì trong ngoặc như một kiểm tra thingamajig boolean, tức là này:Làm cách nào để thực hiện một trường hợp có nhiều điều kiện?

|| && < > 

biết những gì tôi nghĩa là?

cái gì đó như

char someChar = 'w'; 
switch (someChar) { 
case ('W' ||'w'): 
    System.out.println ("W or w"); 
} 

Đáng buồn thay, dường như không làm việc theo cách đó. Tôi không thể có kiểm tra boolean trong trường hợp chuyển đổi.

Có cách nào không?

Nhân tiện, rất tiếc nếu tôi nghe có vẻ khó hiểu. Tôi hoàn toàn không biết tên cho tất cả mọi thứ bằng ngôn ngữ này được nêu ra: X
Bất kỳ câu trả lời đánh giá cao

+0

"boolean kiểm tra thingamajig những" được gọi là "khai thác", và "tis Java" được làm sáng tỏ bởi các 'java' thẻ bạn đã thêm. Ngoài ra, toàn bộ đoạn mã bạn đăng không hợp lệ (Java không có 'trường hợp'), và' {'và'} 'bị đặt sai chỗ). Tốt hơn là đăng * mã thực * bạn đang gặp sự cố; hầu hết thời gian là hành động tạo mã hư cấu hoặc ẩn vấn đề hoặc thêm các sự cố bổ sung không có trong tài liệu gốc. Có lẽ tìm kiếm của Google sẽ giúp - tôi đã thử 'câu lệnh Java' và [kết quả đầu tiên] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html) là hữu ích. –

+0

Nếu câu trả lời là đúng, hãy chọn câu trả lời như được chấp nhận – Roger

+0

Nhà khai thác. Hiểu rồi. Và tôi đã không thực sự biết nếu có ai thậm chí nhìn vào các thẻ, do đó "tiz java". Đoạn trích đó đủ để thể hiện những gì tôi muốn hỏi phải không? Cảm ơn các bản sửa lỗi btw :) – AfroMan

Trả lời

39

Bạn có thể đạt được một HOẶC đối với trường hợp như thế này:

switch (someChsr) { 
case 'w': 
case 'W': 
    // some code for 'w' or 'W' 
    break; 
case 'x': // etc 
} 

Các trường hợp giống như một "goto" và nhiều gotos có thể chia sẻ cùng một dòng để bắt đầu thực hiện.

+0

Wow. Trả lời nhanh. Làm việc như một say mê. Cảm ơn! – AfroMan

+13

Phản hồi nhanh không phải luôn luôn là điều tốt - chỉ cần hỏi bạn gái của tôi:/ – Bohemian

+0

Thông minh nhất mà tôi từng thấy ở đây. Phải +1. Và một người khác hỏi ở đây trong [câu hỏi khác] (http://stackoverflow.com/questions/5086322/java-switch-statement-multiple-cases/39123659) và ppl nói rằng điều đó là không thể. Tôi đã trích dẫn câu trả lời của bạn ở đó. – FaithReaper

3

Mọi trường hợp thường được theo sau là dấu ngắt; tuyên bố để chỉ ra nơi thực hiện nên chấm dứt. Nếu bạn bỏ qua "ngắt", thì việc thực thi sẽ tiếp tục. Bạn có thể sử dụng để hỗ trợ nhiều trường hợp mà cần được xử lý theo cùng một cách:

char someChar = 'w'; 
{ 
case 'W': 
    // no break here 
case 'w': 
    System.out.println ("W or w"); 
    break; 
} 
+0

Vâng, tôi nhận thấy sự cố khi nó tiếp tục đến vụ tiếp theo. Cách thông minh để chăm sóc nó. Cảm ơn! – AfroMan

6

Bạn có thể làm -

switch(c) { 
    case 'W': 
    case 'w': //your code which will satisfy both cases 
       break; 

    // .... 
} 
+0

Cảm ơn câu trả lời của bạn! – AfroMan

1

trường hợp chuyển mạch là chi nhánh cho các đánh giá thay thế của một biểu thức nhất định. Biểu thức được đưa ra trong dấu ngoặc đơn và có thể là các kiểu dữ liệu byte, ngắn, char và int.

Phần thân của lệnh chuyển đổi được gọi là khối chuyển đổi. Một tuyên bố trong khối chuyển đổi có thể được dán nhãn bằng một hoặc nhiều trường hợp hoặc các nhãn mặc định. Câu lệnh switch đánh giá biểu thức của nó, sau đó thực thi tất cả các câu lệnh theo nhãn trường hợp phù hợp.

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

+0

Đã không thực sự trả lời câu hỏi (đối với tôi) nhưng bây giờ tôi biết làm thế nào đến nay tôi có thể đi về với các loại biến trong trường hợp chuyển đổi :) Cảm ơn – AfroMan

+0

Không có probs, cũng lưu ý rằng trường hợp chuyển đổi có một vài phức tạp có thể được tiềm năng gotchas - như trường hợp 'mặc định' ở cuối, và ** rơi qua ** một trường hợp thành một trường hợp khác nếu một' ngắt' hoặc 'trả về' không được sử dụng. Một số ngôn ngữ như Python đã loại trừ chúng hoàn toàn. http://stackoverflow.com/questions/374239/why-doesnt-python-have-a-switch-statement –

Các vấn đề liên quan