英文:
How to correctly write if statement parsing a string to char, java
问题
以下是您要翻译的内容:
我正在使用 Java 编写一个布尔方法来验证用户输入是否正确。只有在首次输入为字母 A-D,且第二次输入为数字 1-4 时,输入才被视为正确(例如:B3)。当我设置我的 if 语句时,旁边出现了一个错误,显示“在参数类型为 char、boolean 时未定义运算符 ==”。我无法弄清楚我的错误在哪里。以下是代码片段。
public static boolean isValid(String s) {
if (!isUpperCase(s)) {
s = s.toUpperCase();
}
if (s.length() < 2) {
if (s.charAt(0) >= 'A' && s.charAt(0) <= 'D') { // 这是我第一次出错的地方
if (s.charAt(1) >= '1' && s.charAt(1) <= '4') { // 这是我第二次出错的地方
return true;
}
}
}
return false;
}
请原谅我的无知,因为我是一个初学者的编码者,不懂所有的术语。
英文:
I am coding in java a boolean method to validate user input is correct. It is correct if the first thing typed is a letter A-D and the second thing typed is 1-4 (e.g. B3). When I set up my if statements I am getting an error next to them that say "The operator == is undefined for the argument type(s) char, boolean". I cannot figure out what I am doing wrong. Here is the snippet of code.
public static boolean isValid(String s) {
if (!isUpperCase(s)) {
s = s.toUpperCase();
}
if (s.length() < 2) {
if (s.charAt(0) == 'A' <= 'D') { // here is the first place I'm getting the error
if (s.charAt(1) >= 1 <= 4) { // here is the second place I'm getting a similar error
return true;
}
}
}
return false;
}
Please excuse my ignorance as I am a novice coder and do not know all the terminology
答案1
得分: 1
可以使用String方法matches
来使用正则表达式:
private static boolean isValid(String s) {
return null != s && s.matches("(?i)[A-D][1-4]");
}
其中:
(?i)
- 启用不区分大小写的匹配
[A-D][1-4]
- 一个在区间[A..D]
内的单个字母,后面跟着一个在区间[1..4]
内的单个数字
英文:
It is possible to use String method matches
which uses a regular expression:
private static boolean isValid(String s) {
return null != s && s.matches("(?i)[A-D][1-4]");
}
where<br/>
(?i)
- enable case-insensitive matching<br/>
[A-D][1-4]
- a single letter in range [A..D]
followed by a single digit in range [1..4]
答案2
得分: 0
以下是翻译好的部分:
你必须在 if
语句中指定两个变量或常量。你可以使用逻辑运算符如 AND(&&)或 OR(||)来连接这些配对。
你不需要测试字符串是否为大写。如果字母已经是大写的,将其转换为大写不会改变任何内容。
以下是你的方法。
public static boolean isValid(String s) {
if (s.length() < 2) {
s = s.toUpperCase();
if (s.charAt(0) >= 'A' && s.charAt(0) <= 'D') {
if (s.charAt(1) >= '1' && s.charAt(1) <= '4') {
return true;
}
}
}
return false;
}
英文:
You have to specify two variables or constants in an if
statement. You can connect pairs with logical operators like AND (&&) or OR (||).
You don't need to test if the String is upper case. Converting it to upper case won't change anything if the letter is already in upper case.
Here's your method.
public static boolean isValid(String s) {
if (s.length() < 2) {
s = s.toUpperCase();
if (s.charAt(0) >= 'A' && s.charAt(0) <= 'D') {
if (s.charAt(1) >= '1' && s.charAt(1) <= '4') {
return true;
}
}
}
return false;
}
答案3
得分: 0
尽管现在有两种提供的解决方案,但我没有看到任何一个解释问题出在哪里。因此,我想解释一下:问题在于您编写的 if 语句的方式。当您写 if (s.charAt(0) == 'A' <= 'D')
时,这个 if 语句似乎在比较一个字符和一个布尔值。因为 'A' <= 'D'
被视为一个真值布尔表达式。
有了这个前提,您可以使用 &&
并检查您的字符是否满足 char >= A && char <= D
。
英文:
Even though there are two offered solutions right now, I didn't see any of them explaining why there's a problem. Thus I want to explain: The problem is the way you write your if statements. When you say if (s.charAt(0) == 'A' <= 'D')
, the if feels like it is comparing a char and a boolean. Because 'A' <= 'D' is perceived as a true boolean statement.
With that said, you can use &&
and check if your char is char >= A && char <= D
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论