Java问题。我的代码有什么问题?

时间:2019-01-11 15:19:24

标签: java

有时候,普通的if-else是不够的。在这种情况下,我们拥有所谓的梯形条件。因此,在这里我们将学习如何使用它们。

给出一个正整数N。您的任务是检查是否可以将其整除,如下所示:

  1. 如果被2整除,则打印“两个”。
  2. 如果可以被3整除,则打印“三”。
  3. 如果可以被11整除,则打印“十一”。
  4. 如果不遵循上述三个规则,请打印“ -1”。

注意:如果N可以被上述给定数字中的一个以上整除,则打印最大的一个。

输入格式: 输入的第一行包含多个测试用例T。对于每个测试用例,将只有一行包含N。

输出格式: 对于每个测试用例,请按照上述步骤中的说明检查可除性并相应地打印语句(不带引号)。

您的任务: 您的任务是根据需要完成检查除数的功能。

约束:

1 <= T <= 10
1 <= N <= 106

示例:

输入:

2
3
11

输出:

Three
Eleven

**有关更多输入/输出示例,请使用“预期输出”选项**

class Geeks {
     static void isDivisibleByPrime (int n) 
     {
             //Your code here
     Scanner sc=new Scanner(System.in);
       int a[]=new int[n];
       for(int i=0;i<n;i++)
       {
           a[i]=sc.nextInt();
           if(a[i]%2==0)
           System.out.println("Two");
           else if(a[i]%3==0)
           System.out.println("Three");
           else if(a[i]%11==0)
           System.out.println("Eleven");
           else
           System.out.println("-1");
       }
     }
}

2 个答案:

答案 0 :(得分:0)

首先在每个代码块周围使用大括号。每个人都更容易阅读。

规范中的第二点是打印可整除的最大值,因此您 应该首先检查它是否先除以 11,然后是 3,然后是 2。

正确的代码在这里:

    static void isDivisibleByPrime(int n) {
    if (n % 11 == 0) {
    System.out.println("Eleven");
    } else if (n % 3 == 0) {
    System.out.println("Three");
    } else if (n % 2 == 0) {
    System.out.println("Two");
    } else {
    System.out.println("-1");
    }
    System.out.println();
    }

答案 1 :(得分:-2)

第一件事-始终在每段代码中使用大括号-尤其是该语言的初学者。它将使您的生活更加轻松,任何人都可以阅读您的代码。

第二,规范中的要点是要打印最大的数值(如果是可整的),因此您应该首先检查它是否先除以11,然后除以3再除以2。

最后,我将首先获取所有输入,而不是使用isDivisibleByPrime方法,而只需为每个输入调用该方法。

因此,只需将您的isDivisibleByPrime保留为

static void isDivisibleByPrime(int n) {
    if (n % 11 == 0) {
        System.out.println("Eleven");
    } else if (n % 3 == 0) {
        System.out.println("Three");
    } else if (n % 2 == 0) {
        System.out.println("Two");
    } else {
        System.out.println("-1");
    }
}

并使用值在其他地方调用

Scanner sc = new Scanner(System.in);
System.out.println("Enter number of test cases:");
int numOfTestCases = sc.nextInt();

for (int i = 0; i < numOfTestCases; i++) {
    System.out.println("Enter value to check:");
    int valueToCheck = sc.nextInt();
    isDivisibleByPrime(valueToCheck);
}

很显然,这里没有错误处理之类的东西,但是由于您可能是新手,所以我确定这不是必需的。

这是一个 online 示例。