为什么我的代码输出偶数和奇数?

时间:2019-07-14 21:36:32

标签: java

我正在尝试从该程序获取奇数。当我运行测试时,我得到的是偶数和奇数。我该怎么解决这个问题?我想念什么吗?

public static String getOddNumbers(int start, int stop) {
    String response = "";
    for(int x=start; x <stop; x++){
        response += ""+x;
    }
    return response;
}

4 个答案:

答案 0 :(得分:0)

您从头到尾都在逐一递增x。要获得[start,stop]范围内的所有奇数,您需要从start之后的第一个奇数开始(包括两端),并以2开头。

public static String getOddNumbers(int start, int stop) {
    String response = "";
    if (start%2==0) ++start;
    for(int x=start; x <stop; x += 2){
        response += ""+x;
    }
    return response;
}

答案 1 :(得分:0)

调试功能的一种好方法是在脑海中手动运行它。例如,如果我们调用getOddNumbers(1,5):

start:

response = "", x = 1

Line 4 runs, followed by the x++ on line 3

response = "1", x = 2

Line 4 and 3 run again

response = "12", x = 3

Line 4 and 3 run again

response = "123", x = 4

and so on...

所以问题是您允许x在代码块中保持偶数,在代码块中告诉它将x附加到字符串。要解决此问题,您需要(a)编写一些内容以确保循环以奇数开始,并且(b)每次将x增加2而不是1。或者,可以包含一个额外的if语句因此仅在x%2!= 0时才将x添加到字符串中,但这会降低效率。

答案 2 :(得分:0)

您的程序到目前为止正在做的是:

  • 迭代间隔[start,stop)中的整数
  • 将每个整数附加到字符串上

程序不执行的操作是:

  • 检查当前数字是偶数还是奇数

要获得预期结果,您需要:

  • 在将当前数字添加到响应字符串之前检查当前数字是否为奇数的条件

可以使用模运算符(%)来检查数字是偶数还是奇数。如果条件x % 2 == 0为真,则该数字为偶数,因此,如果x % 2 != 0该数字为奇数。因此,如果您在具有上述条件的response += ""+x;行之前添加if语句,则您的方法将按预期工作。

user2244399的答案更加有效,因为您只需要枚举奇数。

答案 3 :(得分:0)

在这里,您的代码已被修改以给出正确的答案。您只需检查数字是否为奇数,即数字是否可被2整除。通过检查来完成:if(x%2 == 0)

public static String getOddNumbers(int start, int stop) {
    String response = "";
    for(int x=start; x <stop; x++){
        if(x%2 != 0) {
            response += " "+x;
        }
    }
    return response;
}