基于条件的java逻辑编程

基于条件的java逻辑编程,java,logic,Java,Logic,我有一个关于java的基本问题,我想用java实现。 问题 我有一个整数1到50的数组。 INTA[]={1,2,3,…..50} 如果[i]除以2,则它将显示“Hello” 如果a[i]除以3,则它将显示“世界” 如果a[i]除以5和2,则它将显示“你好世界”” 我已经试过下面的程序,但它的输出是正确的 package test; public class Test { public static void main(String[] args) { int

我有一个关于java的基本问题,我想用java实现。 问题

我有一个整数1到50的数组。 INTA[]={1,2,3,…..50}

如果[i]除以2,则它将显示“Hello”

如果a[i]除以3,则它将显示“世界”

如果a[i]除以5和2,则它将显示“你好世界”

我已经试过下面的程序,但它的输出是正确的

    package test;

public class Test {

    public static void main(String[] args) {
        int []a = {1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};

        for (int i = 0; i < a.length; i++) {
            if(a[i]%2==0) {
                System.out.println("Hello");
            } else if(a[i]%3==0) {
                System.out.println("World");
            } else if(a[i]%2==0 && a[i]%5==0) {
                System.out.println("Hello World");
            }
        }

    }

}
封装测试;
公开课考试{
公共静态void main(字符串[]args){
int[]a={1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
for(int i=0;i
您编写了“a[i]除以5和2”,但您的代码包含“3”:

需要成为

} else if(a[i]%2==0 && a[i]%5==0) {
但问题是,if语句的排序方式永远无法达到第三个选项,您需要将“else-if”更改为“if”(除非您有其他意图,否则您可能需要对语句重新排序,但您必须考虑如何处理可被2和3整除的数字或2、3和5的全部数字)。

您编写了“a[i]被5和2整除”,但您的代码包含“3”:

需要成为

} else if(a[i]%2==0 && a[i]%5==0) {

但问题是,if语句的排序方式永远无法达到第三个选项,您需要将“else-if”更改为“if”(除非你有其他的意图,那么你可能需要重新排序语句,但是你必须考虑一下你想做什么,可以被2和3或2,3和5整除的数字)。

我得到了答案。需要把条件放在正确的位置

if(a[i]%2==0 && a[i]%5==0) {
    System.out.println("Hello World");
} else if(a[i]%3==0) {
    System.out.println("World");
} else if(a[i]%2==0) {
    System.out.println("Hello");
}

谢谢你的帮助

我得到了答案。需要将条件放置在正确的位置

if(a[i]%2==0 && a[i]%5==0) {
    System.out.println("Hello World");
} else if(a[i]%3==0) {
    System.out.println("World");
} else if(a[i]%2==0) {
    System.out.println("Hello");
}

感谢您的帮助

我看不出有任何情况比下面的代码更错误。如果
有改进,则
会有所改进,但您不能偏离太多

    int[] values = {1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};

    for (int i = 0; i < values.length; i++) {
        int value = values[i];

        if (value % 2 == 0) {
            if (value % 5 == 0) {
                System.out.println("Hello World");
            } else {
                System.out.println("Hello");
            }
        } else if (value % 3 == 0) {
            System.out.println("World");
        }
    }
int[]值={1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
对于(int i=0;i
我看不出任何情况比下面的代码更错误。如果
得到改进,则
,但您不能偏离太多

    int[] values = {1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};

    for (int i = 0; i < values.length; i++) {
        int value = values[i];

        if (value % 2 == 0) {
            if (value % 5 == 0) {
                System.out.println("Hello World");
            } else {
                System.out.println("Hello");
            }
        } else if (value % 3 == 0) {
            System.out.println("World");
        }
    }
int[]值={1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
对于(int i=0;i
另一个例子是使用递归来解决它,但您仍然到达
IFs

public class Main {

    public static void main(String[] args) {
        int[] values = {1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};

        check(0, values);
    }

    private static void check(int index, int[] values) {
        if (index >= values.length)
            return;

        int value = values[index];

        if (value % 2 == 0) {
            if (value % 5 == 0) {
                System.out.println("Hello World");
            } else {
                System.out.println("Hello");
            }
        } else if (value % 3 == 0) {
            System.out.println("World");
        }

        check(++index, values);
    }
}

另一个例子是使用递归来解决这个问题,但是您仍然可以到达
IFs

public class Main {

    public static void main(String[] args) {
        int[] values = {1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};

        check(0, values);
    }

    private static void check(int index, int[] values) {
        if (index >= values.length)
            return;

        int value = values[index];

        if (value % 2 == 0) {
            if (value % 5 == 0) {
                System.out.println("Hello World");
            } else {
                System.out.println("Hello");
            }
        } else if (value % 3 == 0) {
            System.out.println("World");
        }

        check(++index, values);
    }
}

你的意思是“如果a[i]可以被……整除吗?”“如果a[i]被5和2整除,那么它将显示……”你的最后一个else-if子句比较的是3和5,而不是2和5。如果a[i]被5和2整除,那么它将显示“你好世界”。你的代码声明:
a[i]%3==0和&a[i]%5==0
。你的最后一个条件
else如果(a[i]%3==0和&a[i]%5==0)如果(a[i]%3==0)
你需要将你的条件从最具体的一个排序到更一般的一个。被2和5除比只被2除更具体,所以你需要更早地处理这种情况。你的意思是“如果a[i]可被…”除吗如果a[i]被5和2除,那么它将显示“Hello World”。您的代码声明:
a[i]%3==0&&a[i]%5==0
。您的最后一个条件
else if(a[i]%3==0&&a[i]%5==0)
将永远不会满足,因为它位于
else中
from
if(a[i]%3==0)
您需要将您的条件从最具体的条件排序为更一般的条件。被2和5除比只被2除更具体,因此您需要更早地处理这种情况。关于最后一句话:解决方案是将
else if
更改为
if
或删除第三个条件并放入
if(a[i]%5==0)
if(a[i]%2==0)
块中,这对IMO来说也更清晰。你的意思是需要把条件放在正确的位置。比如如果(a[i]%2==0&&a[i]%5==0){System.out.println(“Hello World”);}需要把它放进去1st@Test不,我的意思是:
if(a[I]%2==0){if(a[I]%5==0){print(“Hello world”);}else{print(“Hello”)}
关于最后一个语句:解决方案是将
else if
更改为
if
,或者删除第三个条件并将
if(a[i]%5==0)
放入
if(a[i]%2==0)中
block,读IMO也更清楚。你的意思是需要把条件放在正确的位置。比如,(a[i]%2==0&&a[i]%5==0){System.out.println(“Hello World”);}需要把它放在1st@Test不,我的意思是:
if(a[I]%2==0){if(a[I]%5==0){print(“Hello world”);}else{print(“Hello”)}