【问题标题】:Boolean Logic String Iteration布尔逻辑字符串迭代
【发布时间】:2014-11-17 19:53:18
【问题描述】:

我正在使用 for 循环来解析字符串,如下所示:

for (int i = 1; i < s.length(); ++i)

字符串全部小写,如果当前字符或前一个字符不是字母,我想避免它,像这样:

if (s.charAt(i) - 97 < 0 || s.charAt(i) - 97 > 25 || s.charAt(i-1) < 0 || s.charAt(i-1) > 25)
{
    continue
}

我输入的第一个字符串是“marty”,但 if 语句注册为 true。我已经确认四个布尔值中的每一个都评估为假,但 if 语句本身对于每个字符串中的每个字母显然都是正确的。

我什至制作了四个单独的布尔变量,每个参数一个,确认它们都是假的,然后将它们全部组合在一起。也是假的。然而 if 语句每次都会触发。

我真的不知道我在这里错过了什么。谁能帮帮我?

【问题讨论】:

标签: java string if-statement boolean


【解决方案1】:

您正在使用- 97 减去'a',因此您可以将字符与范围 0-25 进行比较。但是你只在前两个条件下这样做了。继续减去“前一个”字符上的最后 2 个条件 97

【讨论】:

  • 另外,与'a''z' 进行比较会更清楚:if (s.charAt(i) &lt; 'a' || ...
  • 我不敢相信我忘记在后两项检查中添加“-97”......我的大脑完全空白!感谢您的帮助!
猜你喜欢
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
  • 1970-01-01
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多