Java作业。布尔逻辑的麻烦

时间:2013-09-21 19:44:52

标签: java

参加我的第一个Java课程并且陷入了愚蠢的境地。我在做回文项目。这种逻辑似乎很好。在任何一种情况下都显示为True。我做错了什么?

呼叫:

boolean result = check(input);

或方法本身:

public static void display(boolean result, String palindrome)
{
    if (result = true)
    {
        JOptionPane.showMessageDialog(null, palindrome
                + " is a palindrome.");
    } else
        JOptionPane.showMessageDialog(null, palindrome
                + " is not a palindrome.");

}

以下是整个代码: import javax.swing.JOptionPane;

public class Palindrome
{

public static void main(String args[])

{
    // declare variables

    // call methods
    String input = retrieveInput();
    boolean result = check(input);
    display(result = false, input);
    finish();
}

// Accepts and validates input
public static String retrieveInput()
{
    // declare variables
    int length;
    String palindrome = null;
    boolean done = false;
    while (!done)
    {
        try
        {
            // user input
            palindrome = JOptionPane.showInputDialog(null,
                    "Please enter a 5 digit integer:");
            length = palindrome.length();

            // data validation
            if (length != 5)
            {
                throw new NumberFormatException();
            } else
                done = true;
        }

        catch (NumberFormatException e)
        {
            JOptionPane.showMessageDialog(null,
                    "Error. Please enter a 5 digit integer", "Error",
                    JOptionPane.INFORMATION_MESSAGE);
        }
    }
    return palindrome;
}

public static Boolean check(String palindrome)
{
    // determine if palindrome

    int left = 0;
    int right = palindrome.length() - 1;

    while (left < right)
    {
        if (palindrome.charAt(left) != palindrome.charAt(right))
            return false;

        left++;
        right--;
    }

    return true;

}

// The output method displays commission and sales
public static void display(boolean result, String palindrome)
{
    if (result = true)
    {
        JOptionPane.showMessageDialog(null, palindrome
                + " is a palindrome.");
    } else
        JOptionPane.showMessageDialog(null, palindrome
                + " is not a palindrome.");

}

// finish() method exits program
public static void finish()
{
    System.exit(0);
}

}

3 个答案:

答案 0 :(得分:3)

 if (result = true)

result设置为true并对其进行评估(再次,为true)。使用:

if(result==true)

if(result)

代替。前者是大多数值比较的语法,后者只适用于布尔值。

答案 1 :(得分:2)

比较值时使用

==

= 是赋值运算符,而不是比较运算符。

所以试试:

if (result == true)

if (result)

编辑后的完整代码:

public static void main(String args[])
{
    String input = retrieveInput();
    boolean result = check(input);
    display(result, input);  // change result = false 
    finish();
}

答案 2 :(得分:1)

在这一行

if (result = true)

您要将值true分配给变量result,并且该值(true)正用作if的条件,而不是检查result是否true 1}}等于if。换句话说,您的true将始终将其条件评估为==

您需要使用if (result == true) 运算符

if (result)

或只是

{{1}}