参加我的第一个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);
}
}
答案 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}}