java - 如何在不使用控制语句或循环的情况下将整数中的所有数字相乘(000 和 1000 之间除外)?

标签 java

我正在尝试编写一个程序,它可以仅使用 Java 中的数学表达式将 0 到 1000 之间的数字的所有数字相乘。只要用户输入 3 位数字,我的程序就可以正常工作,但如果他们输入小于 100 的数字,则结果为 0。

我曾尝试使用“%10”获取输入的最后一位数字并使用“/10”删除最后一位数字,但没有控制语句来检测输入是否已减少为零,程序最终乘以0 当 2 位数字已减少为零时,给出不正确的结果。

public class MultiplyDigits {
    public static void main(String[] args){
        java.util.Scanner input = new java.util.Scanner(System.in);
        System.out.print("Enter a number between 0 and 1000: ");
        int number = input.nextInt();
        int product = 1;
        product*=number%10;
        number/=10;
        product*=number%10;
        number/=10;
        product*=number%10;
        System.out.println(product);
    }
}

输入 55 的结果应该是 25,但我的程序是 5 x 5 x 0 = 0

输入 999 结果为 729,这是正确的。 9 x 9 x 9 = 729

再说明一下,这是新手教科书第2章的一道题。作者没有涉及选择语句、循环、编写我们自己的方法或类,或任何比基本编程更高级的东西,所以这意味着没有这些也是可行的。本书涵盖了在 Java 内置的类中调用方法,尽管作者只提到了 Math 和 System 类中的方法。例如Math.max()、Math.min()、Math.pow()、System.currentTimeMillis();

最佳答案

这个变体怎么样。要找到第一个数字,您可以首先将输入的数字减 100,然后加 1 以避免乘法时出现 0。并且,作为推荐的 NVioli,第二个数字应该是相同的更新,以便有可能输入小于 10 的数字。因此,最终的变体是:

int number = input.nextInt();

    int t1 = 1 + (number-100) / 100;
    int t2 = (1 + (number-10) / 10) % 10; \\By NVioli
    int t3 = number % 10;

    int  product = t1 * t2 * t3;

    System.out.println(product);

关于java - 如何在不使用控制语句或循环的情况下将整数中的所有数字相乘(000 和 1000 之间除外)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54559891/

相关文章:

java - 带有 xsd :sequence 的丑陋 java 代码

java - 如何在 mongo 查询中找到最小的数字?

java - 如何在java中使用循环计算阶乘

Java POJO 到 JSON 的转换工具?

java - 如何在测试中@Autowired BuildProperties?

java - Matlab filtfilt()函数在Java中的实现

java - 增量 Gradle Build 没有说 UP-TO-DATE

java - 使用 FrameLayout 和 TextView 创建自定义 ImageButton 类

java - 输入流的单元测试 IOException

java - Neo4j Spatial 导致生命周期异常