Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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 回文程序没有给出正确的输出_Java - Fatal编程技术网

Java 回文程序没有给出正确的输出

Java 回文程序没有给出正确的输出,java,Java,好吧,我知道我错过了一些简单的东西,但是我找不到我的错误。程序运行正常,只是返回了错误的消息。我没有恰当地称呼它或什么。我可以从display()方法中删除代码,并将其放入check()方法中,这样它就可以完美地运行。有人想帮助一个陷入困境的新手吗?我不确定是否需要显示整个程序,如果不需要,我很抱歉。有几次我被告知我没有输入足够的代码。我还希望对我编写代码的方式有任何建设性的反馈,因为我不想养成任何坏习惯 public class Palindrome { // Main Method

好吧,我知道我错过了一些简单的东西,但是我找不到我的错误。程序运行正常,只是返回了错误的消息。我没有恰当地称呼它或什么。我可以从display()方法中删除代码,并将其放入check()方法中,这样它就可以完美地运行。有人想帮助一个陷入困境的新手吗?我不确定是否需要显示整个程序,如果不需要,我很抱歉。有几次我被告知我没有输入足够的代码。我还希望对我编写代码的方式有任何建设性的反馈,因为我不想养成任何坏习惯

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
中显示的行