号码识别程序

时间:2018-05-17 03:18:37

标签: java

非常业余的编码员, 我正在制作一个简单的程序来判断一个数字是正数,负数,奇数还是偶数。到目前为止,除了积极的奇数之外,一切都有效,但是无法弄清楚为什么?

另外,我将如何循环呢?我会使用for或while循环吗?

谢谢

package weekeleven;
import java.util.Scanner;

public class week111 {

    static int number;
    static String pE;
    static String pO;
    static String nE;
    static String nO;
    static String eR;   

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
        number = -input.nextInt();      
        pE = ("Positive Even");
        pO = ("Positive Odd");
        nE = ("Negative Even");
        nO = ("Negative Odd");
        eR = ("Error"); 

        Object x = null;
        x=getSignAndParity(x);
        System.out.println(x);
}

public static String getSignAndParity(Object x) { 

    if ((number > 0) && (number % 2 == 0)) { //negative and even
        return nE;
    } else if((number < 0) && (number % 2 == 1)) { // positive and odd
        return pO;
    } else if((number < 0) && (number % 2 == 0)) { // positive and even
        return pE;
    } else if((number > 0) && (number % 2 == 1)) { // negative and odd
        return nO;
    } else { // other cases
        return eR;

    }
}
}      

3 个答案:

答案 0 :(得分:1)

您的代码存在多个问题,导致其无法按预期工作。

1)您在负数上使用mod 2来检查负数是偶数还是奇数。但那不行。例如,-7 mod 2 = -1(既不是1也不是0)

2)您正在否定用户的输入:

number = -input.nextInt();

你翻了标记><这是不必要的

3)您不应将int输入作为对象传递。你可以简单地说:

public static String getSignAndParity(int x)  

删除所有多余的和不必要的声明和代码,你可以这样做:

public static void main(String[] args) {    
    Scanner input = new Scanner(System.in);
    int number = input.nextInt();      
    System.out.println(getSignAndParity(number));
}

public static String getSignAndParity(int num) { 
    if(num == 0)
        return "Error";         
    String sign = num>0?"Positive":"Negative";
    String parity = Math.abs(num)%2==0?"Even":"Odd";
    return sign + " " + parity;   
}  

答案 1 :(得分:0)

随此改变

else if((number > 0) && (number % 2 == 1)) { // positive and odd return pO; }

对于正奇数和循环,您需要现有代码或具有从扫​​描仪获取的条件,然后关闭扫描仪。 scanner:https://www.javatpoint.com/Scanner-class

答案 2 :(得分:0)

你必须像这样改变积极的奇怪:

else if((number < 0) && (number % 2 == -1)) { // positive and odd}