3 回答

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
請(qǐng)嘗試下面提到的解決方案。
String[] validOperators = {"+", "-", "/", "*", "=", "q", "Q"};
String userInput;
Scanner scanner = new Scanner(System.in);
Arrays.sort(validOperators);
do{
System.out.print("Please enter a valid operation ( +, -, /, *, = , q or Q ) to quit: ");
userInput = scanner.nextLine();
}while(Arrays.binarySearch(validOperators, userInput) <= -1);

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
我寧愿使用數(shù)組和流,從Java 8開(kāi)始就可用。例如:
Arrays.stream(validOperators).anyMatch(userInput::equals)
如果你需要一個(gè)更好的性能解決方案來(lái)滿足一小部分元素,那么內(nèi)存和進(jìn)程都有效,并且不使用語(yǔ)法糖或Java 8流(而由于Vinod Singh Bist,循環(huán)更清晰,改進(jìn)):
public static void main(String[] args) {
char[] validOperators = {'+', '-', '/', '*', '=', 'q', 'Q'}; // String is more expensive
char userInput;
Scanner scanner = new Scanner(System.in);
do{
System.out.print("Please enter a valid operation ( +, -, /, *, = , q or Q ) to quit: ");
userInput = scanner.next().charAt(0);
}while(!contains(validOperators, userInput)) ;
}
private static boolean contains(char[] elements, char c) {
// for loop is usually faster for small lists than any built-in iterator for primitives like char
for (int i = elements.length - 1; i >= 0; i--) {
if (elements[i] == c) {
return true;
}
}
return false;
}

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
Arrays.binarySearch(validOperators, userInput)
需要排序數(shù)組。
如果數(shù)組不是 ,則結(jié)果為 。你應(yīng)該你sorted
undefined
Arrays.sort(validOperators);
添加回答
舉報(bào)