1

所以我从 9 月开始我的大学,我有一门介绍编程的课程,我必须做一个识别 3 个数字并告诉有多少相等的程序,例如:30 30 2 "2 numbers are equal" 但我得到错误:不是关于“else ( n1!=n2 && n2!=n3 && n3!=n1); {

import java.util.Scanner;

    public class Equal {

        public static void main(String[] args) {

        Scanner in = new Scanner( System.in );

        int n1, n2, n3;
        int a = 3;
        int b = 2;
        int c = 0;

        System.out.println("choose tree numbers:");

        n1 = in.nextInt();
        n2 = in.nextInt();
        n3 = in.nextInt();

        if ((n1==n2 && n1==n3 || n2==n1 && n2==n3 || n3==n1 && n3==n2)) {
        //Then the tree numbers are equal;
        System.out.println( "There are: " + a + " equal numbers" );
        }

        if ((n1!=n3 && n1==n2 || n2!=n1 && n2==n3 || n3!=n2 && n3==n1 )) {
        //Then only two numbers ill be the same;
        System.out.println( "There are: " + b + " equal numbers" );
            }   
        else ((n1!=n2 && n2!=n3 && n3!=n1)); {
        //All the numbers are not equal;
        System.out.println( "There are: " + c + " equal numbers" );
            }
        }
    }
4

2 回答 2

1

改变

 else ( n1!=n2 && n2!=n3 && n3!=n1 ); {

 else if ( n1!=n2 && n2!=n3 && n3!=n1 ) {
于 2013-10-04T20:01:35.273 回答
0
if (condition1) { do_something; }
else if (condition2) { do_something_else; }
else { do_a_different_thing; }  

根据定义,一个简单的 else 子句不带条件 - 如果前面的 if/else-if 子句触发,它就会触发。我想您可以将其视为隐含条件:if (!condition && !condition2).
(但请注意,一般来说,您不需要遵循 if/else-if/else 模式。您可以在没有 else-ifs 或 else-clause 的情况下连续有多个 if,或者您可以有一个 if/else没有 else-ifs 等。这一切都取决于情况的确切逻辑。)

几个建议。
您正在考虑所有可能的情况,这真是太好了。但是在这里,你有三个数字,如果你已经确定它们三个都不是匹配的,并且它们中的两个不是匹配的,那么剩下的唯一可能就是它们都不匹配做。因此,您不必明确地测试这种情况。
同样,在您的第一个条件中,检查三路匹配,您也不必显式测试每个组合。如果 n1==n2 && n1==n3,则通过传递性 n2==n3 并且所有三个匹配。顺序无关紧要。

玩得开心!

于 2013-10-04T23:54:33.100 回答