【问题标题】:Arrays and nested Loops数组和嵌套循环
【发布时间】:2013-09-22 07:48:53
【问题描述】:

书中的问题:

编写一个循环,用 1 到 100 之间的十个随机数填充数组值。为两个嵌套循环编写代码,用 1 到 100 之间的十个不同随机数填充值。

我的问题:为什么这需要嵌套循环?

我的代码:

import java.util.Arrays;
import java.util.Random;

public class ArrayPractice
{
    public static void main(String[] args)
    {
        Random random = new Random();
        int[] a = new int[10];
        int i;

        for (i = 0; i < 10; i++)
        { 

            a[i] = 1 + random.nextInt(100);

            System.out.print(a[i]+ " ");

    }

}

【问题讨论】:

  • 我觉得这里的关键词是“不同”。
  • 10 个不同的随机数。您需要保留一个您已经使用过的数字数组,并在每次选择随机数时循环遍历该数组。如果您使用过其中任何一个,请跳过并尝试另一个随机数
  • 当然你仍然可以在没有嵌套循环的情况下这样做,但这可能是最简单的方法
  • @Cruncher 哈希集似乎没有那么迟钝。
  • 不要在循环之前初始化 i。 @RichardTingle:这显然是学习循环的一部分,所以在这里使用其他方式是题外话。

标签: java arrays while-loop


【解决方案1】:

请注意,您不需要仅仅为了使用数组而导入 Array。

您可以检查数组中的现有值 rnd,并在发现重复值后立即递减外部循环的计数器:

import java.util.Random;

public class ArrayPractice
{
    public static void main(String[] args)
    {
        Random random = new Random();
        int[] a = new int[10];

        for (int i = 0; i < 10; i++)
        { 
            int rnd = 1 + random.nextInt (100);
            a[i] = rnd;
            System.out.print (a [i] + " ");
            for (int j = 0; j < i; ++j)
            {
                if (a[j] == rnd) --i;
            }
        }
    }
}

【讨论】:

    【解决方案2】:
    import java.util.Arrays;
    import java.util.Random;
    
    public class ArrayPractice {
        public static void main(String[] args) {
            Random random = new Random();
            int[] array = new int[10];
            int index = 0;
    
            while(index < array.length){
                int number = 1 + random.nextInt(100);
    
                boolean found = false;
                for (int i = 0; i < index; i++) {
                    int elm = array[i];
                    if (elm == number) {
                        found = true;
                        break;
                    }
                }
                if(!found){
                    array[index++] = number;
                }
            }
            System.out.print(Arrays.toString(array));
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-17
      • 1970-01-01
      • 2022-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多