0

有一个隐藏的测试用例表明此代码不起作用,我不知道为什么。[已编辑] 抱歉信息不足。我正在使用一个应用程序来学习 Java,这是一个编码测试,总共有 4 个测试,有 4 个不同的输入,前 3 个很好,但最后一个(隐藏所以我不知道输入和输出)告诉我认为这是错误的,但我不知道我的代码有什么问题

import java.util.Scanner;

public class Main {
   public static void main(String[] args) {
       Scanner read = new Scanner(System.in);
       int number = read.nextInt();
       int x = 3;

       while(number > 3 && x <= number)
       {
           if(x%3==0 || x%10==3)
           {
               System.out.println(x);
           }
           ++x;
       }
   }
}
4

3 回答 3

0

如果 number = 3,则您的 while 循环不会运行,并且由于 3 可以被 3 整除,因此应该打印它。

您可以从 while 循环中删除该部分,然后保留它。

while(x <= number)
于 2020-10-18T03:16:44.107 回答
0

一件事是 x>3 条件是错误的,因为 x==3 也是正确的。另一件事是,当您可以从 0-number 执行简单的 for 循环/while 循环并检查数字 %3 或 number%10 是否为真时,为什么还要使用额外的条件并增加复杂性?

于 2020-10-18T05:05:45.670 回答
0

在您的代码中,您只是在数字为 3 时忽略。当数字 == 3 时,您的条件数 > 3 将被忽略。

这样做while(number >= 3 && x <= number)而不是while(number > 3 && x <= number)

while(number >= 3 && x <= number)
   {
       if(x%3==0 || x%10==3)
       {
           System.out.println(x);
       }
       ++x;
   }
于 2020-10-18T04:07:45.473 回答