Java 回文程序没有给出正确的输出
好吧,我知道我错过了一些简单的东西,但是我找不到我的错误。程序运行正常,只是返回了错误的消息。我没有恰当地称呼它或什么。我可以从display()方法中删除代码,并将其放入check()方法中,这样它就可以完美地运行。有人想帮助一个陷入困境的新手吗?我不确定是否需要显示整个程序,如果不需要,我很抱歉。有几次我被告知我没有输入足够的代码。我还希望对我编写代码的方式有任何建设性的反馈,因为我不想养成任何坏习惯Java 回文程序没有给出正确的输出,java,Java,好吧,我知道我错过了一些简单的东西,但是我找不到我的错误。程序运行正常,只是返回了错误的消息。我没有恰当地称呼它或什么。我可以从display()方法中删除代码,并将其放入check()方法中,这样它就可以完美地运行。有人想帮助一个陷入困境的新手吗?我不确定是否需要显示整个程序,如果不需要,我很抱歉。有几次我被告知我没有输入足够的代码。我还希望对我编写代码的方式有任何建设性的反馈,因为我不想养成任何坏习惯 public class Palindrome { // Main Method
public class Palindrome {
// Main Method
public static void main(String[] args) {
// Declare variables
int number;
// Call method
number = retrieveInput();
check(number);
display();
}// End main method
//*************************************************************************************
// Method to retrieve the input
public static int retrieveInput(){
//Declare variables
String number = null;
int numInput = 0;
boolean done = false;
// Prompt user for input and validate that input
while(!done){
try{
number = JOptionPane.showInputDialog("Enter 5 single digits");
numInput = Integer.parseInt(number);
if (numInput <10000 || numInput > 99999)
throw new NumberFormatException();
else
done = true;
}
catch(NumberFormatException e)
{
JOptionPane.showMessageDialog(null, "Entry invalid. Please re-enter 5 single digits", "Error", JOptionPane.ERROR_MESSAGE);
}
}
return numInput;
}// End retrieveInput method
//*************************************************************************************
// Method to determine if input is a palindrome or not
public static boolean check(int number){
//Declare variables
int num1;
int num2;
int num4;
int num5;
boolean isPalindrome = false;
num1 = number / 10000;
num2 = number % 10000 / 1000;
num4 = number % 100/10;
num5 = number % 10;
// Checking to see if input is a palindrome
if (num1 == num5 && num2 == num4);
{
isPalindrome = true;
}
if (num1 != num5 && num2 != num4);
{
isPalindrome = false;
}
return isPalindrome;
}// End check method
//*************************************************************************************
// Method to display results
public static void display(){
// Declare variable
boolean isPalindrome = false;
// Display results
if (isPalindrome == true)
{
JOptionPane.showMessageDialog(null, "These 5 digits are a palindrome", "Results", JOptionPane.INFORMATION_MESSAGE);
}
else
{
JOptionPane.showMessageDialog(null, "These 5 digits are NOT a palindrome", "Results", JOptionPane.INFORMATION_MESSAGE);
}
} // End display method
//*************************************************************************************
} // End class Palindrome
公共类回文{
//主要方法
公共静态void main(字符串[]args){
//声明变量
整数;
//调用方法
number=检索输入();
支票(号码);
显示();
}//端主方法
//*************************************************************************************
//方法来检索输入
公共静态int retrieveInput(){
//声明变量
字符串编号=空;
int numInput=0;
布尔完成=假;
//提示用户输入并验证该输入
而(!完成){
试一试{
number=JOptionPane.showInputDialog(“输入5个位数”);
numInput=Integer.parseInt(数字);
如果(numInput 99999)
抛出新的NumberFormatException();
其他的
完成=正确;
}
捕获(数字格式)
{
JOptionPane.showMessageDialog(null,“输入无效。请重新输入5个位数”,“错误”,JOptionPane.Error\u消息);
}
}
返回numInput;
}//末端检索输入法
//*************************************************************************************
//方法来确定输入是否为回文
公共静态布尔检查(整数){
//声明变量
int num1;
int num2;
int num4;
int num5;
布尔值isPalindrome=false;
num1=数量/10000;
num2=数量%10000/1000;
num4=数量%100/10;
num5=数字%10;
//检查输入是否为回文
如果(num1==num5&&num2==num4);
{
isAlindrome=true;
}
如果(num1!=num5&&num2!=num4);
{
isAlindrome=false;
}
返回isPalindrome;
}//末端检查法
//*************************************************************************************
//方法来显示结果
公共静态无效显示(){
//声明变量
布尔值isPalindrome=false;
//显示结果
如果(isAlindrome==true)
{
showMessageDialog(null,“这5位数字是回文”,“结果”,JOptionPane.INFORMATION_消息);
}
其他的
{
showMessageDialog(null,“这5位数字不是回文”,“结果”,JOptionPane.INFORMATION_MESSAGE);
}
}//结束显示方法
//*************************************************************************************
}//结束类回文
isPalindrome
应该在main方法中,并从check方法中获取值。然后将其传递给display
方法。现在的方式是,isAlindrome
始终为false,因为它在display
方法中刚刚初始化为false
,并且从未更改。isAlindrome
应该在主方法中,并从检查方法中获取值。然后将其传递给display
方法。现在的isAlindrome
总是错误的,因为它在display
方法中刚刚初始化为false
,并且从未更改。哦,我的天啊,你在check方法中做了一些非常愚蠢的事情。您说isPalindrome
为false,然后显示isPalindrome
的值,而没有考虑到isPalindrome
是通过完全不同的方法计算的,您无法获得它的值。您可以使用相同的方法从retrieveInput
中获取数字,然后输入check
:函数参数。这里有一个修改后的显示方法
:
public static void display(boolean isPalindrome){
// Declare variable
boolean isPalindrome = false;
// Display results
if (isPalindrome == true)
{
JOptionPane.showMessageDialog(null, "These 5 digits are a palindrome", "Results", JOptionPane.INFORMATION_MESSAGE);
}
else
{
JOptionPane.showMessageDialog(null, "These 5 digits are NOT a palindrome", "Results", JOptionPane.INFORMATION_MESSAGE);
}
}
然后,主要方法需要如下所示:
public static void main(String[] args) {
// Declare variables
int number;
boolean isPalindrome
// Call method
number = retrieveInput();
isPalindrome = check(number);
display(isPalindrome);
}
哦,天哪,你在检查方法上做了一件很愚蠢的事。您说
isPalindrome
为false,然后显示isPalindrome
的值,而没有考虑到isPalindrome
是通过完全不同的方法计算的,您无法获得它的值。您可以使用相同的方法从retrieveInput
中获取数字,然后输入check
:函数参数。这里有一个修改后的显示方法
:
public static void display(boolean isPalindrome){
// Declare variable
boolean isPalindrome = false;
// Display results
if (isPalindrome == true)
{
JOptionPane.showMessageDialog(null, "These 5 digits are a palindrome", "Results", JOptionPane.INFORMATION_MESSAGE);
}
else
{
JOptionPane.showMessageDialog(null, "These 5 digits are NOT a palindrome", "Results", JOptionPane.INFORMATION_MESSAGE);
}
}
然后,主要方法需要如下所示:
public static void main(String[] args) {
// Declare variables
int number;
boolean isPalindrome
// Call method
number = retrieveInput();
isPalindrome = check(number);
display(isPalindrome);
}
将
main
的最后两行更改为
boolean isPalindrome = check(number);
display(isPalindrome);
将显示的声明更改为
public static void display(boolean isPalindrome){
public static void display(boolean isPalindrome){
// Declare variable
//don't need to decalre var as
//it is now a parameter to the function
//rest of method as before
}
并删除display
中显示
boolean isPalindrome = false;
这样,display
使用的isAlindrome
将与在check
中评估的相同
编辑:
同时删除结尾处的分号
if (num1 != num5 && num2 != num4);
否则,它下面的块将在任何情况下运行,并将isAlindrome
设置回false。或者,您可以完全删除此条件及其下的块,因为它实际上什么都不做。将main
的最后两行更改为
boolean isPalindrome = check(number);
display(isPalindrome);
将显示的声明更改为
public static void display(boolean isPalindrome){
public static void display(boolean isPalindrome){
// Declare variable
//don't need to decalre var as
//it is now a parameter to the function
//rest of method as before
}
并删除display
中显示的行