当前位置: 首页 > 知识库问答 >
问题:

布尔总是输出true

邢俊悟
2023-03-14

我有一节课要测试回文。在我的循环中,它比较每个字母,看看它们是否匹配,如果不匹配,它应该使布尔变量为false,反之亦然。现在我已经测试了很多次,我可以看到,如果我正确地输入回文,它实际上会转到正确的if语句,使变量为真。如果它遇到一对字母不匹配,它应该声明布尔变量为false并从循环中中断,实际上它做得很好。但无论如何,当我试图用布尔变量来确定返回的响应时,它总是真的,我不知道为什么。

 is a palindrome!  Hooray!

总是输出,即使循环转到假布尔值并中断,这让我很困惑。

public class Palindrome
{
public static void main(String[] args) 
{
    //is it true?
    boolean truth;
    //create stack and queue
    Stack s = new Stack();
    Queue q = new LinkedList();
    //scanner
    Scanner input = new Scanner(System.in);
    //get string
    System.out.println("Enter a palindrome, or don't, I'll know:");
    String palin = input.nextLine();
    //remove whitespace
    palin = palin.replaceAll("\\s+","");
    System.out.println(palin);
    //remove puncuation
    palin = palin.replaceAll("\\p{P}", "");
    System.out.println(palin);
    //set lowercase
    palin = palin.toLowerCase();
    System.out.println(palin);

    //feed string to stack and queue
    for(int i = 0; i < palin.length(); i++)
    {
        s.push(palin.charAt(i));
        q.add(palin.charAt(i));
    }
    System.out.println(s);
    System.out.println(q);
    while(!s.isEmpty() && !q.isEmpty())
    {
        Object sTemp = s.pop();
        Object qTemp = q.poll();
        String sString = sTemp.toString();
        String qString = qTemp.toString();
        System.out.println(sString + qString);
        System.out.println("looptest");
        if(sString.equals(qString))
        {
            truth = true;
        }
        else
        {
            truth = false;
            break;
        }
    }
    if(truth = true)
    {
        System.out.println(palin + " is a palindrome!  Hooray!");
    }
    else
    {
        System.out.println(palin + " is no palindrome! You lied!");
    }
}
}

共有1个答案

端木明贤
2023-03-14

基本的,但大多数程序员(初学者)倾向于键入错误,或者只是不知道===的区别,或者不知道它们的正式含义,所以这里开始了

=是赋值运算符,==检验相等性或条件运算符

所以在你的队伍中

 if(truth = true)
    {
       ...
    }
if(truth == true)
    {
      ...
    }
if(truth.equals(true))
    {
       ...
    }
 类似资料:
  • 问题是: 我们将“根到叶路径”定义为树中的任意节点序列,从根节点开始向下延伸到叶。该路径的“根到叶路径和”是沿该路径的所有节点(包括根)的和。定义一个空树,使其不包含根到叶的路径(因此其和为零)。定义一个具有一个节点的树,使其根到叶的路径仅由根组成(因此其总和是根的值)。给定一个二叉树和一个值“sum”,如果该树有一些根到叶的路径,使得沿路径的所有值相加等于“sum”,则返回true。如果找不到这

  • 我需要调用一个Oracle过程,其中一个IN参数与VARCHAR2和OUT参数作为BOOLEAN数据类型。 下面是我使用SimpleJDBCall的代码 异常: CallableStatementCallback;SQL未分类的SQLExctive[{callPACKAGE_NAME.PROC_NAME(?, ?)}]; SQL状态[99999];错误代码[17004];无效列类型: 16;嵌套异

  • 我注意到java有一个问题。它不能解析空值的布尔类。我知道它有静态方法,但它的签名声明它只接受,而不接受。 换句话说,它有以下签名: 但不是: 检查布尔值而不陷入NullPointerException的最佳方法是什么?

  • 问题内容: 我正在尝试进行布尔测试,以便如果其中一个胎压低于35或超过45,则系统会输出“不良充气”。 在我的课堂上,我必须使用布尔值,这是我尝试过的。但是,返回的布尔值始终为true。我不明白为什么。 问题答案: 更改为: 甚至更好: 布尔比较运算符为和。该是赋值运算符。 另外,在检查是否违反条件之前,需要进行初始设置。

  • 问题内容: 我每天要进行几个实验,在Elasticsearch中存储实验的 错误 和 布尔 值(如果结果正确)。现在,我想在图形中显示结果(使用highchart js)。我使用这样的汇总查询来接收每天的汇总错误,包括标准差: 我面临的问题是,我无法像从数据库中获得双重错误一样检索布尔值。当我只是将字段名称更改为 我收到此错误消息: 但是,可以将所有布尔值合计为true,将true设置为1,将fa

  • 我需要写出一个布尔语句,如果输入的数字(使用扫描仪输入)是。。。 在1到100范围内,但不是40到50范围内的偶数 如中所示,如果用户输入44或46,输出将返回“false”,但如果是45或43,则应返回“true”。如果是一个低于40但小于1的数字,则输出应为“真”。如果是一个大于50但小于100的数字,那么输出也应该是真的。 这是我目前所拥有的... 除了40到50之间的奇数之外,这个函数会返

  • 检查给定的参数是否是一个原生的布尔值。 使用 typeof 来检查一个值是否为一个布尔值。 const isBoolean = val => typeof val === 'boolean'; isBoolean(null); // false isBoolean(false); // true

  • 我不太了解ArrayList,我想知道,ArrayList.add()是一个布尔值吗?