如何使用数组分隔整数?

问题描述 投票:-1回答:1

我是编程的菜鸟,所以在某些关键术语上可能会遇到麻烦。我正在尝试编写一个程序,其中用户键入一个最小数和一个最大数,并生成一个随机数。之后,我想知道随机生成的数字中有多少个偶数和奇数。我能够成功完成第一部分,但无法检测随机生成的数字中有多少个偶数和奇数。

样本输出:例如:随机生成的数字是:478,099偶数个数字:2奇数位数:3

我尝试创建无效的局部变量,我想使用switch case语句,但是遇到了麻烦。目前,我使用了for循环,但我想使用开关盒。

    public static void main(String[] args) 
     {
    DecimalFormat fmt = new DecimalFormat("###,###,###,###,###"); 
    Scanner scanner = new Scanner(System.in);
    int max = -1;
    int min = 0;
    int [] diffvalue = new int [1];
    System.out.println("Enter in a maximum value: ");
    max = scanner.nextInt();
    System.out.println("Enter in a minimum value: ");
    min = scanner.nextInt();
    if (min > max)
    {
    System.out.println("Your minimum value is greater then your 
          maximum value.");
    }
    for (int i = 0; i < diffvalue.length; i++)
    {
        diffvalue[i] = (int)(Math.random()*(max-min)+min);
    }
    System.out.println("Random Value: ");
    for(int i = 0; i < diffvalue.length; i++)
    {
        System.out.println(fmt.format(diffvalue[i]));
     }
}
  int l = diffvalue[i];
   while (l > 0)
  {
  switch ((l % 10) % 2) 
    {
    case 1:
        odd++;
        break;
    default:
        even++;
 } 
  l /= 10;
        }

    }

我不能分开看整个数字。

 **EDIT 1**
    import java.util.Scanner;
    import java.text.DecimalFormat;
    public class MyClass 
    {
    public static void main(String args[]) 
    {
    DecimalFormat fmt = new DecimalFormat("###,###,###,###,###"); 
    Scanner scanner = new Scanner(System.in);
    int max = -1;
    int min = 0;
    int [] diffvalue = new int [1];
    System.out.println("Enter in a maximum value: ");
    max = scanner.nextInt();
    System.out.println("Enter in a minimum value: ");
    min = scanner.nextInt();
      int even = 0; int odd = 0;
    if (min > max)
    {
        System.out.println("Your minimum value is greater then your 
       maximum value.");
    }
    for (int i = 0; i < diffvalue.length; i++)
    {
        diffvalue[i] = (int)(Math.random()*(max-min)+min);
    }
    System.out.println("Random Value: ");
    for(int i = 0; i < diffvalue.length; i++)
    {
    System.out.println(fmt.format(diffvalue[i]));
    }
    for(int i = 0; i < diffvalue.length; i++)
   {
    int l = diffvalue[i];
    while (l > 0)
    {
        switch ((l % 10) % 2) 
        {
            case 1:
                odd++;
                break;
            default:
                even++;
        } 
       l /= 10;
   }
   System.out.println("Even:" + even);
   System.out.println("Odd: " + odd);

}
}
}

我已经获得了检测偶数和奇数的方法,现在我很想知道是否有一种方法可以在没有两个变量(奇数,偶数)的情况下进行此操作。

java arrays switch-statement
1个回答
1
投票

您未将l值除以10。这就是为什么它进入无限循环的原因。

public static void even(int[] diffvalue)
{
    int even = 0;
    for(int i = 0; i < diffvalue.length; i++)
    {
        int l = diffvalue[i];
        while (l > 0)
        {
            if((l % 10)%2==0) // this line is changed
            {
                even++;
            }
            l = l/10; // this line is changed
        }
    }
}

此外,如果要检查偶数,则必须执行...%2 == 0。查找上面代码中修复的错误。

编辑:您还可以在同一循环中计算奇数,如下所示:

if((l % 10)%2==0) // this line is changed
{
    even++;
}
else 
{
    odd++;
}

EDIT3:代码应该放在方法内部,而不是替换方法。我在这里看不到开关用例的任何用例,但是可以像这样容纳它:

public static void even(int[] diffvalue)
{
    int even = 0;
    for(int i = 0; i < diffvalue.length; i++)
    {
        int l = diffvalue[i];
        while (l > 0)
        {
            switch ((l % 10) % 2) 
            {
                case 1:
                    odd++;
                    break;
                default:
                    even++;
            } 
        l /= 10;
    }
}

希望这会有所帮助。祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.