【问题标题】:Loops in simple Java program简单 Java 程序中的循环
【发布时间】:2015-12-04 19:32:32
【问题描述】:

我正在为我的 Java 类编写一个程序,该程序需要计算一对夫妇需要多少个孩子才能拥有一种性别,假设孩子是男性的可能性为 50/50 .然后,该程序需要跟踪在 T 数量的试验中,每个性别需要 2 个孩子有多少次,3 个孩子、4 个孩子和最后 5 个或更多孩子需要多少次。我通过在运行 T 次的 for 循环中嵌套一个 while 循环来解决这个问题。我的问题是,虽然我的 for 循环运行了 T 次,但我的 while 循环会吐出,比如 3 个孩子,然后不会更新 for 循环的其余部分。关于如何让 while 循环正确更新的任何建议?谢谢!

public class B
{
    public static void main(String[] args) 
    {
        int girls = 0;
        int boys = 0;
        System.out.print("Enter variable: ");
        int T = StdIn.readInt();

        for (int i = 0; i < T; i++)
        {
            while ((boys < 1) || (girls < 1))
            {
                if (Math.random() < 0.5)
                {
                    boys = boys + 1;
                }   
                else
                {
                    girls = girls + 1;
                }   
            }
        }
    }
}

【问题讨论】:

  • 您的代码完全按照您的要求执行。我担心你没有正确理解问题陈述。

标签: java loops for-loop while-loop


【解决方案1】:

您需要在每次跑步时重置男孩和女孩的计数。因此,您的 while 循环周围的代码应该是:

boys = 0;
girls = 0;
while ((boys < 1) || (girls < 1))

但是在 while 循环之后,您需要计算此运行适用于哪个家庭规模:2 个孩子、3 个孩子、4 个孩子、5 个以上的孩子并增加相应的计数器。

switch(boys + girls) {
    case 2:
        twoKids++;
    break;

    case 3:
        threeKids++;
    break;

    case 4:
        fourKids++;
    break;

    default:
        fivePlusKids++;
}

【讨论】:

  • 我也是这么想的,但是用 && 而不是 || 运行我的程序不会产生正确的输出。如果我在 for 循环之外运行程序并添加一些代码以打印出有多少男孩和女孩,它可以与 || 一起正常工作。并产生类似女孩:0 男孩:2 和 && 的东西。我只需要一种方法让我的 while 循环重复,这样我就可以从中获得 10 个独立的前哨。
  • 你是对的 - 问题不在于 while 子句,这是因为您需要重置男孩和女孩的计数。我已经编辑了答案。
  • 如果您想跟踪有 10 个以上孩子的家庭怎么办?开关盒解决方案似乎不适用于此。数组似乎更合适。
  • OP 从未要求过。但这可以通过将结果存储在以孩子数量为关键字的映射中来完成。数组也不能很好地扩展。
  • @Jason 一个维护状态的数组似乎比 N 个计数器更可取。将数组初始化为您要跟踪的孩子的数量,每个元素代表 N 个孩子的数量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
相关资源
最近更新 更多