【问题标题】:How to separate integers using arrays?如何使用数组分隔整数?
【发布时间】:2019-11-09 18:40:10
【问题描述】:

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

样本输出: 前任: 随机生成数为:478,099 #偶数位数:2 #奇数位数:3

我尝试创建不起作用的局部变量,我想使用 switch case 语句,但我遇到了麻烦。目前我使用了 for 循环,但我想使用 switch case。

    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);

}
}
}

我已经得到它来检测偶数和奇数现在我很想知道是否有办法在没有两个变量(奇数,偶数)的情况下做到这一点。

【问题讨论】:

  • 顺便说一句,这是我第一次使用stackoverflow。
  • 我应该把 if 放在 switch case 语句中吗?

标签: java arrays switch-statement


【解决方案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;
    }
}

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

【讨论】:

  • 谢谢,但我想使用 switch case 语句。现在我已经使用了一个 while 和一个 for 循环。我不知道如何将变量放入其中并将其分开。抱歉,不清楚。我应该把if语句放在switch的情况下吗?
  • 如果我将 if 语句放在 switch case 中它不起作用。
  • 谢谢,我如何保存这样的奇偶数 例如:示例输出:随机生成的数字是:478,099 #偶数位数:2 #奇数位数:3
  • 为什么要把if语句放在switch语句中?
  • 我还能如何使用开关盒并让它发挥作用?很抱歉没有经验。
猜你喜欢
  • 2019-09-26
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
相关资源
最近更新 更多