【问题标题】:int variable comparison returning a boolean valueint 变量比较返回一个布尔值
【发布时间】:2014-04-30 23:15:49
【问题描述】:

我有一个布尔方法正在对字符串进行一些错误检查。 我有一个名为“numWords”= 8 的 int 类常量。 我将一个字符串传递给布尔方法,在该方法中我使用 .split 和 .length 对字符串进行字数统计。 一个名为“words”的 int 计算字符串中的单词数。 完成此操作后,我想做一个 if 语句将单词与 numWords 进行比较。 如果它们的数量相等,则返回 true,否则返回 false。 我试过 == 和 .equals 但没有任何效果。有什么想法吗?

public static final int numWords = 8;

boolean test = true;
String sentence = "I am a man";
test = check(sentence);

public static boolean check (String sentence) {
    boolean x = true;
    String[] s = sentence.split(" ");
    int words = s.length;

    if (words == numWords) {
        x = true;
    } 
    else {
        x = false;
    }
    return x;

}

我试过 == ,它永远不会评估为假

我试过 .equals,int 不能被取消引用

我试过=,不编译不兼容的类型

我想要的是如果 words = 8 那么它等于 numWords 并返回 true。 如果 words 是 7 或 9 则不等于 numWords 并返回 false。

【问题讨论】:

  • 你在哪里返回boolean?在您的check 方法中?请发布可编译的代码。
  • 您的方法中的return 语句在哪里?如果没有return 语句,该代码将无法编译。
  • 你有什么意见?
  • 注意:不会编译,因为它在这里错过了;boolean x = true
  • 为什么这甚至被否决了?此外,由于 OP 声称该方法始终返回 false,我们可以假设他在那里有一个 return 语句,但只是错过了这里的代码。

标签: java


【解决方案1】:

我猜你真正想要的是返回一个布尔值而不是分配一个布尔值。

public static boolean check (String sentence) {

    String[] s = sentence.split(" ");
    int words = s.length;

    return words == numWords
}

【讨论】:

    【解决方案2】:

    您没有有效的语法(任何 没有分号的语句都是无效的),并且您实际上并没有返回任何内容。

    不影响程序的正确性,在声明和实例化x(即boolean x = true;)后添加分号,并在方法的底部添加return x;。或者,您可以简单地执行以下操作:

    return s.length == numWords;
    

    不需要if检查,如果它们相等则为真,否则为假。

    【讨论】:

      【解决方案3】:

      首先,如果缺少冒号,您的代码将无法编译

      boolean x = true;
      

      另外,因为你的方法声明是

      public static boolean check (String sentence)
      

      你必须返回一个布尔值:

      return some_boolean;
      

      最终的代码是:

      public static boolean check (String sentence) {
          String[] s = sentence.split(" ");
      
          return s.length == numWords;
      }
      

      注意:

      线

      return words == numWords;
      

      将返回boolean,这是比较s.length == numWords的结果。

      【讨论】:

        【解决方案4】:

        让它返回你的字数,然后在你的方法之外检查它是否等于你的 numWords 值。或者制作另一种方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-10-18
          • 1970-01-01
          • 1970-01-01
          • 2021-07-16
          • 1970-01-01
          • 2016-02-27
          • 1970-01-01
          相关资源
          最近更新 更多