【问题标题】:Java Question .What is the problem in my code?Java 问题。我的代码有什么问题?
【发布时间】:2019-06-06 12:58:29
【问题描述】:

有时,普通的 if-else 是不够的。在这种情况下,我们有所谓的阶梯 if 和 else 条件。所以在这里我们将学习使用它们。

给定一个正整数 N。你的任务是检查它是否可整除,如下所示:

  1. 如果能被 2 整除,则打印“Two”。
  2. 如果能被 3 整除,则打印“三”。
  3. 如果能被 11 整除,则打印“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");
       }
     }
}

【问题讨论】:

  • 参数n不应该是你检查的数字吗?
  • 但是根据问题有2个输入。你能详细解释一下吗??
  • 我的解释是你应该填写的方法 (isDivisibleByPrime) 每个输入值都会调用一次
  • 这意味着。我们必须检查 n 是否可以被 2,3 或 11 整除 ????但在这种情况下,多个测试用例会失败
  • 堆栈溢出问题:你的标题有什么问题?

标签: java


【解决方案1】:

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

您的规范中的第二点是打印可整除的最大值,因此您 应该首先检查它是否先除以 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();
    }

【讨论】:

  • 请为您的回答提供一些背景信息。
【解决方案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 示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多