gpt4 book ai didi

java - 检查字符串中是否有无效字符

转载 作者:行者123 更新时间:2023-12-01 17:52:32 24 4
gpt4 key购买 nike

我正在尝试编写一个以字符串作为输入的程序。

该字符串必须是仅包含括号、运算或数字的方程式。

我在下面发布的代码是我想出的,但是当我运行它时,我输入的任何内容显然都是无效的字符串。有人可以告诉我我做错了什么吗?

        System.out.println("Enter a string");                               
String str = s.nextLine(); //s is a Scanner object
int n = str.length();

for(int i = 0; i < n; i++) {
if( !Character.isDigit(str.charAt(i)) || str.charAt(i) != '+'
|| str.charAt(i) != '-' || str.charAt(i) != '*'
|| str.charAt(i) != '/' || str.charAt(i) != '('
|| str.charAt(i) != ')' || str.charAt(i) != '['
|| str.charAt(i) != ']' || str.charAt(i) != '{'
|| str.charAt(i) != '}') {
System.out.println("invalid string, try again: ");
str = s.nextLine();
}
...}

最佳答案

根据评论中的建议,将 || 切换为 &&:

if( !Character.isDigit(str.charAt(i)) && str.charAt(i) != '+'
&& str.charAt(i) != '-' && str.charAt(i) != '*'
&& str.charAt(i) != '/' && str.charAt(i) != '('
&& str.charAt(i) != ')' && str.charAt(i) != '['
&& str.charAt(i) != ']' && str.charAt(i) != '{'
&& str.charAt(i) != '}') {
System.out.println("invalid string, try again: ");
str = s.nextLine();
}

或者,为了使您的代码更易于理解:

final String validChars = "0123456789+-*/()[]{}";
for(int i = 0; i < n; i++) {
if(!validChars.contains(str.charAt(i))) {
System.out.println("invalid string, try again: ");
str = s.nextLine();
// potential bug here - i and n are not being reset
}
}

注意:您遇到了一个错误,即从读取新行时没有重置 i 索引或 n 长度。扫描仪,以防您的上一行包含无效字符(请参阅上面代码中的注释)。

关于java - 检查字符串中是否有无效字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48431984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com