当前位置: 首页 > 知识库问答 >
问题:

如何在Java中找到一个数的乘积和位数?

郁烨
2023-03-14

我需要找到所输入的数字的和和乘积。我有求和部分,但它唯一的问题是,当我第一次输入一个数字时,它会给我正确的答案,但当我输入另一个数字时,它只是将第一个数字的和与第二个数字的和相加,然后检查这两个和的和是否是奇数(对不起,如果它的混淆)。对于代码的产品部分,我似乎不知道该怎么做。

最后,如果和和积都是奇数,我需要它来说明输入的数字是一个极奇数。

这个Java应用程序检查区间[101,100001]中的整数,以查看它们是否是“极奇”和“超级极奇”数字。

一个整数是“极奇数”,如果...

(0)它是奇数(1)它有奇数位数(2)它的所有位数都是奇数(3)它的位数之和是奇数(4)它的位数之积是奇数

如果有人能解释一下超级奇数部分的要求是什么,那将非常感谢,因为英语不是我的第一语言。我不需要任何人做整个作业。我只是需要帮助我卡住的部分。提前感谢!

public class TestOddNumbers {

  public static void main(String[] args) {

    Scanner stdin = new Scanner(System.in);
    int userInput;
    int sum = 0;
    int product = 1;
    final int EXIT = -1;
    final int MIN = 101;
    final int MAX = 100001;
    String total = "";

    do{
        System.out.println("Please enter a positive whole number between "
                + "" + MIN + " and " + MAX + ". Enter " + EXIT + " "
                + "when you are done entering numbers.");

        userInput = stdin.nextInt();
        total += String.valueOf(userInput);

        if(userInput==EXIT){
        System.out.println("Thanks for playing!");
        break;
        }

        if(userInput > MIN && userInput < MAX){
            if(userInput % 2 == 1){
            System.out.println("It's an odd number");
            }
            else{
                System.out.println("Not an odd number");
            }

            if(total.length() %2 == 1){
            System.out.println("It also has an odd number of digits");
            }
            else{
            System.out.println("Does not have an odd number of digits");
            }

            boolean[] allOdds = {true};

            String.valueOf(userInput).chars().forEach(i -> {
            if(Integer.parseInt(String.valueOf((char)i))%2==0){
            allOdds[0] = false;
            }
            });

            if(allOdds[0]){
                System.out.println("all digits are odds");
            }
            else{
                System.out.println("all digits are not odds");
            }

            // The sum code block
            while (userInput != 0) {
                sum += userInput % 10;
                userInput /= 10;
            }
            if((sum += userInput) % 2 == 1){
                System.out.println("The sum of the digits are odd");
            }
            else{
                System.out.println("The sum of the digits are not odd");
            }

            // The product code block
            while(userInput != 0) {
                product *= userInput % 10;
                userInput /= 10;
            }
            if((sum *= userInput) % 2 == 1){
                System.out.println("The product of the digits are odd");
            }
            else{
                System.out.println("The product of the digits are not odd");
            }

        }
        else{
            System.out.println("Check the bounds again!!");
        }

        System.out.println();
    } 
    while(userInput > MIN || userInput < MAX);

   }
}

共有1个答案

农波涛
2023-03-14
public class Product_of_Digits_of_a_Number
{
    // accepting a three digit number
    static void calc(int n)
    {
        System.out.println("\f"); // clearing the screen

        // extracting each digit from the number
        int units = n % 10; // taking the units' digit out of the number and storing in u

        int tens = (n / 10) % 10; //taking tens' digit and string in tens.

        int hundreds = (n / 10) / 10; //taking hundreds' digit and storing in hundreds

        // performing the required calculation on the digits
        int a = units * tens * hundreds; // storing the product in a

        // printing the digits
        System.out.println("the product of digits of " + n + " is " + a);
   }
}

如果您想要求和,代码是相同的,但是您必须将和存储在变量A中。

 类似资料:
  • 问题内容: 我想知道如何解决这个问题(这不是学校的东西,我是业余爱好,我正在做欧拉的练习)。我的代码中的问题是:char c = great.charAt(i); 我想知道如何在great.charAt(i)中看到下一个i。我发布了代码,在此先感谢您的帮助。 问题答案: 查看程序的输出,我看到它具有如下所示的块: 这说明,对于五个数字的子序列,您实际上只是将其中一个数字乘以五倍。 您需要确保迭代该

  • 本文向大家介绍在C ++中查找前N个质数的乘积,包括了在C ++中查找前N个质数的乘积的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个数字n。我们必须找到1到n之间的质数的乘积。因此,如果n = 7,则输出将为210,因为2 * 3 * 5 * 7 = 210。 我们将使用Eratosthenes筛分法来查找所有素数。然后计算它们的乘积。 示例 输出结果

  • 假设第一个输入行是这样的: 第二输入线为: 输出应为: 我试着把所有的数字放在一个单独的数组里。但我不知道如何找到所说的数组的乘积。输出大小应该是第一个数的大小+第二个数的大小。因此,如果产品大小较小,它应该有一个前导0。

  • 本文向大家介绍在C ++中查找数组编号的乘积的最后k位,包括了在C ++中查找数组编号的乘积的最后k位的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个由n个元素组成的数组,称为A。我们还有另一个数字k。我们的任务是查找数组A中元素乘积的最后k位。假设A = [15、22、13、19、17],则乘积为1385670,最后k = 3位为670。 为了解决这个问题,我们将模10 k下的数字相乘。

  • 我有一个数组,我需要三个数中最大的一个数和各自的索引值。我有一个这样的数组: 如何找到最大的数字及其索引值?

  • 本文向大家介绍Java程序,查找数字的唯一素数因子的乘积,包括了Java程序,查找数字的唯一素数因子的乘积的使用技巧和注意事项,需要的朋友参考一下 Java程序,查找数字的唯一素数因子的乘积,Java代码如下- 示例 输出结果 一个名为Demo的类包含一个名为素数因子的静态函数,该函数查找一个数字的素数因子,查找唯一的数字,并将这些素数因子的乘积存储在一个变量中。在main函数中,定义了数字的值,