Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 布尔值总是输出true_Java_Loops_If Statement_Boolean - Fatal编程技术网

Java 布尔值总是输出true

Java 布尔值总是输出true,java,loops,if-statement,boolean,Java,Loops,If Statement,Boolean,我有一个班来测试回文。在我的循环中,它比较每个字母,看它们是否匹配,如果不匹配,则应该使布尔变量为false,反之亦然。现在我已经对它进行了大量测试,我可以看到,如果我正确地输入了回文,它实际上会转到正确的if语句,从而使变量为true。如果它遇到一对不匹配的字母,它应该将布尔变量声明为false,并从循环中中断,实际上它是正确的。但不管怎样,当我试图使用布尔变量来确定返回的响应时,它总是正确的,我不知道为什么 is a palindrome! Hooray! 始终是输出,即使循环转到假布

我有一个班来测试回文。在我的循环中,它比较每个字母,看它们是否匹配,如果不匹配,则应该使布尔变量为false,反之亦然。现在我已经对它进行了大量测试,我可以看到,如果我正确地输入了回文,它实际上会转到正确的if语句,从而使变量为true。如果它遇到一对不匹配的字母,它应该将布尔变量声明为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!");
    }
}
}
公共类回文
{
公共静态void main(字符串[]args)
{
//这是真的吗?
布尔真理;
//创建堆栈和队列
堆栈s=新堆栈();
队列q=新的LinkedList();
//扫描器
扫描仪输入=新扫描仪(System.in);
//获取字符串
System.out.println(“输入回文,或者不输入,我会知道:”);
字符串palin=input.nextLine();
//删除空白
palin=palin.replaceAll(\\s+,“”);
System.out.println(佩林);
//去除鼻塞
palin=palin.replaceAll(\\p{p},“”);
System.out.println(佩林);
//设小写
palin=palin.toLowerCase();
System.out.println(佩林);
//将字符串馈送到堆栈和队列
对于(int i=0;i
使用此行

if(truth = true)
您正在使用
=
true
赋值给
truth
,而您可能是想比较
=
。它已经是一个
布尔值
,因此只需将其作为条件即可

if (truth)
用这条线

if(truth = true)
您正在使用
=
true
赋值给
truth
,而您可能是想比较
=
。它已经是一个
布尔值
,因此只需将其作为条件即可

if (truth)
基本的,但大多数程序员(初学者)倾向于输入错误或只是不知道两者的区别
=
==
或与他们正式会面,就这样

=
是赋值运算符和
=
测试相等运算符或条件运算符

那么在你的队伍里

 if(truth = true)
    {
       ...
    }
您正在将变量
真值
赋值为
真值

必须使用
==
,这样布尔值就不会改变

if(truth == true)
    {
      ...
    }

基本的,但大多数程序员(初学者)倾向于输入错误或只是不知道两者的区别
=
==
或与他们正式会面,就这样

=
是赋值运算符和
=
测试相等运算符或条件运算符

那么在你的队伍里

 if(truth = true)
    {
       ...
    }
您正在将变量
真值
赋值为
真值

必须使用
==
,这样布尔值就不会改变

if(truth == true)
    {
      ...
    }


为什么要使算法如此复杂?为什么要使算法如此复杂?请注意,此答案不正确,因为您不能使用
真值.equals(true)
,它将无法编译,因为基本类型没有
.equals()
方法请注意,此答案不正确,因为您不能使用
真值.equals(true)
,由于基元类型没有
.equals()
方法,它将无法编译