Bạn có thể sử dụng String#equalsIgnoreCase(String)
trong bốn chuỗi 1: -
if (oper.equalsIgnoreCase("add") ||
oper.equalsIgnoreCase("addition") ||
oper.equals("+"))
Nếu số chuỗi tăng lên, bạn sẽ được tốt hơn off với một List
, và sử dụng phương pháp contains
của nó. Nhưng chỉ với những đầu vào này, bạn chỉ có thể làm theo cách tiếp cận này.
Một cách khác để tiếp cận này là sử dụng String#matches(String)
phương pháp, mà phải mất một regex: -
if (oper.matches("add|addition|[+]")
Tuy nhiên, bạn không thực sự cần một regex cho việc này. Đặc biệt, phương pháp này có thể trở nên xấu xí cho các đầu vào lớn hơn. Nhưng, nó chỉ là một cách cho trường hợp này. Vì vậy, bạn có thể chọn một trong số họ. 1 là rõ ràng hơn để xem trên đi đầu tiên.
Ngoài ra, bạn cũng có thể sử dụng để lưu trữ enum
operators
, và vượt qua nó là ví dụ ở khắp mọi nơi, chứ không phải là một string
. Nó sẽ dễ dàng hơn để làm việc với. Enum sẽ trông như thế này:
public enum Operator {
ADD,
SUB,
MUL,
DIV;
}
Bạn có thể cải thiện nó theo nhu cầu thích hợp của bạn. Lưu ý rằng, vì bạn đang nhận được đầu vào của người dùng, trước tiên bạn sẽ cần phải xác định cá thể enum thích hợp dựa trên nó, và từ đó bạn có thể làm việc trên cá thể enum đó, chứ không phải là String.
Nguồn
2013-01-24 12:58:58
lẽ ghép các từ thay thế trong một danh sách/mảng và làm một chứa()/vòng. Để cho phép viết hoa chữ cái, chỉ cần chuyển đổi tất cả đầu vào thành chữ thường (hoặc chữ hoa) trước khi phân tích cú pháp hoặc sử dụng equalsIgnoreCase, như được đề xuất bên dưới. – keyser
'equalsIgnoreCase()' thay vì 'bằng()'? –