【问题标题】:(int)Math.random prints random line of numbers outside of set range for first line(int)Math.random 打印第一行设置范围之外的随机数字行
【发布时间】:2013-12-07 18:14:27
【问题描述】:

尝试创建一个随机数数组。这是我目前所拥有的:

    public static void main(String[] args) {
randomArray(5);
    }
    public static int randomInt(int low, int high){
        int x=0;
        for (int i=0;i<10;i++){
           x= (int)(Math.random ()*high)+low;
             System.out.print(x);
        }
     return x;       
    }
    public static int[] randomArray(int n){
        int[] a = new int [n];
        for (int i = 0;i<a.length;i++){
            a[i]=randomInt (0,100);}
        printArray(a);
        return a;
    }
    public static void printArray (int[]a) {
        for (int i = 0; i<a.length;i++){
            System.out.println(a[i]);
    }

    }
}

这会返回类似于

的东西
9265956792478464547638861753937389642303686408882492318499964845942725987325868511898811389
42
49
73
72

这是方式,方式超出范围。有什么想法吗?

【问题讨论】:

  • System.print() 不附加换行符,因此您只是在同一行上打印一堆数字。
  • 为什么你的randomInt 方法中有一个for循环?你正在制作 9 个随机数,然后将它们扔掉并返回第十个?

标签: java arrays math random


【解决方案1】:

因为您在randomInt 内有一个:System.out.print(x)

【讨论】:

  • 稍微说明一下,System.out.print(x) 将打印x后面没有回车。那行真的是92659567等等等等等等。
  • 哇,我很笨。一定是在测试期间离开的。谢谢。
【解决方案2】:
  • 您的“randomInt”函数中有一个打印语句
  • 您的“randomInt”函数中有一个不必要的循环
  • 你的 'randomInt' 函数只产生了正确的结果,因为你使用的是 low=0
    • 例如:高=10;低=5; ((Math.random() * high) + low) 会产生 5 到 15 之间的结果,而不是 5 到 10 之间

import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone
{
    public static void main(String[] args) {
        randomArray(5);
    }
    public static int randomInt(int low, int high){
        return (int)(Math.random() * (high - low)) + low;       
    }
    public static int[] randomArray(int n){
        int[] a = new int[n];
        for (int i = 0; i<a.length; i++) {
            a[i] = randomInt(0, 100);
        }
        printArray(a);
        return a;
    }
    public static void printArray (int[] a) {
        for (int i = 0; i<a.length; i++){
            System.out.println(a[i]);
        }
    }
}

【讨论】:

  • @iamnotmaynard - 我从 ideone.com(基于 Web 的编译器)复制并粘贴了它,该行位于我用来制作示例代码的 Java 语言模板中。
猜你喜欢
  • 1970-01-01
  • 2013-08-27
  • 2011-12-31
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多