发出“if”语句

时间:2012-12-02 01:25:53

标签: java if-statement boolean

我正在参加CS课程,这段代码给了我一些问题。

         while (statScan.hasNext()){

        currentStat = statScan.next();
        if (currentStat =  h);
        {       
            hStat++;
        }
        System.out.println("" + currentStat);

查看“if”语句。 Java说“无法将字符串转换为布尔值”,而我的理解boolean是一个真/假的分类,所以Java不理解的是如何评估和比较字符串。我如何强迫它这样做?

4 个答案:

答案 0 :(得分:4)

问题是你分配它而不是询问它是否相等(指定'=',等于'==') 这是该行的解决方案: 如果它的字符串使用.equals()

if (currentStat.equals(h))

答案 1 :(得分:1)

Java中的=运算符用作赋值运算符,因此当您编写x = y时,您并不意味着 x等于y 但是将y的值赋给x

比较运算符是==运算符,但这将比较基本类型(int,char,float等)对对象的引用,这不是您需要的常用行为。对于任何非原始类型的内容,您应该考虑使用Object继承的boolean equals(Object o)方法。要明确原因,请查看herehere

答案 2 :(得分:1)

这里有一些问题:

if (currentStat =  h);

首先,在结尾处有一个分号,这将导致if语句无法正常运行。它基本上是有条件地执行一个空语句。将始终运行以下代码块(您打算成为条件代码)。删除分号以避免这种情况。

此外,您只有=而不是==。这意味着您要将h的值分配给currentStat。这是一个经典的,经典的拼写错误。正如@YogendraSingh在其他答案中提到的那样,您应该使用equals()方法对Java中的字符串进行比较。否则,您只是比较两个项目是否完全相同。检测何时在两个不同的对象中保存相同的字符串文本,您需要使用equals()

因此请将此行更改为:

if (h.equals(currentStat))

答案 3 :(得分:0)

假设h是一个字符串,请使用equals方法进行字符串比较:

      if(currentStat.equals(h))

目前您正在使用赋值运算符 =,它将h的字符串值分配给currentStat

当您将运算符更改为比较运算符==然后它将比较对象实例相等而不是值,我认为您不需要/