【问题标题】:Print all numbers in between a set value in an array打印数组中设定值之间的所有数字
【发布时间】:2014-04-13 14:31:06
【问题描述】:

我想知道如何使用随机数打印数组中设定值之间的所有数字。它还应该说明有多少用户随机数高于设定值。以下是它的外观示例:

"How many random numbers between 0 – 999 do you want? 12

These are your numbers

998 168 859 32 533 390 339 243 328 164 536 375

these 8 numbers is between 0 – 499

168 32 390 339 243 328 164 375

these 4 numbers is between 500 – 999

998 859 533 536"

这是我到目前为止的代码,我已经设法让它打印出最大的数字。

public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);                                                    
    System.out.print(" How many random numbers between 0 – 999 do you want? ");     
    int varde = in.nextInt();   
    System.out.println(" ");
    System.out.println(" this is your numbers:");

    int randomArray[]=new int[varde]; 

    for(int i = 0; i<varde; i++)
    {   
        randomArray [i] = (int) (Math.random () * 999); 
        System.out.println(randomArray[i]);
    }

    int largest = randomArray[0]; 
    for(int x=0; x<randomArray.length; x++){ 
        if(randomArray[x]>largest){ 
            largest =  randomArray[x]; 
        } 
    } 

    System.out.print("Largest no is: "+largest); 
}

【问题讨论】:

  • 到目前为止你尝试过什么?显示其他不相关任务的现有代码并不是“你迄今为止尝试过的”。
  • 次要注意:Math.random() 返回的值介于0(包括)和1(不包括)之间,所以(int) (Math.random () * 999); 不会在0-999 之间而是0 之间的随机数-998(只有当Math.random() 会返回1 时,你才可以随机选择999,这是不可能的)。尝试乘以 1000。您也可以尝试使用 Random 类。它有很好的方法nextInt(max),它将在0(包括)和max(不包括)之间随机,所以nextInt(1000) 对你来说很好。
  • @Andrei No it doesn't.
  • 到目前为止我尝试过的是我显示的代码,我认为我可以使用我设法从“最大数字”一书中找到的内容并以某种方式使用它,所以它会显示某个点以上的最大数字。感谢您对 Math.random 的指点!

标签: java arrays random


【解决方案1】:

你去。

我所做的是添加 java.util.Random 类而不是 Math.random() 来生成随机数。

使用ArrayList 分配更多内存(如果需要更多内存)来存储小于或大于 499 的值。

public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);                                                    
    System.out.print(" How many random numbers between 0 – 999 do you want? "); 
    int varde = in.nextInt();   
    System.out.println(" ");
    System.out.println(" this is your numbers:");
    Random randomGenerator = new Random();

    int randomArray[]=new int[varde];

    for(int i = 0; i<varde; i++)
    {   
        randomArray[i] = randomGenerator.nextInt(1000); 
        System.out.print(randomArray[i]);
    }

    int largest = randomArray[0]; 
    for(int x=0; x<randomArray.length; x++){ 
        if(randomArray[x]>largest)
            largest =  randomArray[x]; 
    }
    System.out.println("Largest no is: "+largest); 

    List<Integer> numbersGreaterThanHalf = new ArrayList<Integer>();
    List<Integer> numbersLowerThanHalf = new ArrayList<Integer>();

    for(int x=0; x<randomArray.length; x++){ 
        if(randomArray[x]>499) 
            numbersGreaterThanHalf.add(randomArray[x]);
        else
            numbersLowerThanHalf.add(randomArray[x]);
    }

    System.out.println("these " + numbersLowerThanHalf.length() + "numbers is between 0 – 499");
    for(Integer number: numbersLowerThanHalf)
    {
       System.out.print(number + " ");
    }

    System.out.println("these " + numbersGreaterThanHalf.length() + "numbers is between 500 – 999");
    for(Integer number: numbersGreaterThanHalf)
    {
       System.out.print(number + " ");
    }
}

没有新的数组实现摘录:

  StringBuilder numbersAboveHalf = new StringBuilder();
  StringBuilder numberBelowHalf = new StringBuilder();
  int countOfNumbersAboveHalf = 0;
  int countOfNumbersBelowHalf = 0;

  for(int x=0; x<randomArray.length; x++){ 
        if(randomArray[x]>499){
            numbersAboveHalf.append(randomArray[x]).append(" ");
            ++countOfNumbersAboveHalf;
        }
        else{
            numbersBelowHalf.append(randomArray[x]).append(" ");
            ++countOfNumbersBelowHalf;
        }
  }
  System.out.println("these " + countOfNumbersBelowHalf + "numbers is between 0 – 499");
  System.out.println(numbersBelowHalf.toString());
  System.out.println("these " + countOfNumbersAboveHalf + "numbers is between 500 – 999");
  System.out.println(numbersAboveHalf.toString());

它的作用是遍历数组并且:

  • 数一数500以上的数字有多少,500以下的有多少。
  • 用数字构建 2 个字符串。

【讨论】:

  • 您想解释一下您的代码应该如何解决 OP 的问题吗?或者至少包括几个 cmets? OP 打算从中学到什么?
  • 我正在编辑它以添加...如您所见。你能收回你的反对票吗?
  • @Andrei 肯定是does not 每次都创建一个新实例,只是第一次。
  • @Tobb 当 OP 处于编写加密安全应用程序的技能水平时,将是了解随机数生成器质量的合适时间。现在在这个问题上,它是无关紧要的。
  • @Andrei 回复:安全;众所周知,这里不值得讨论,见stackoverflow.com/questions/11051205/…或谷歌搜索信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-31
  • 2012-09-09
相关资源
最近更新 更多