没有得到输出中的随机数

时间:2013-07-08 02:37:00

标签: java io

该程序创建一个名为datafile.txt的文件,并且应该使用文本I / O将100个随机写入文件的整数写入。但是,我的输出是“java.util.Random@30c221”100次。如何获得100个随机数?提前谢谢。

import java.io.*;
import java.util.Random;

public class Lab5 {

public static void main(String args[]) {

    //Open file to write to
    try {
        FileOutputStream fout = new FileOutputStream("F:\\IT311\\datafile.txt");


    int index = 0;

    //Convert FileOutputStream into PrintStream 
    PrintStream myOutput = new PrintStream(fout);
    Random numbers = new Random();
        //Declare array
        int array[] = new int[100];
        for (int i = 0; i < array.length; i++)
        {
        //get the int from Random Class
        array[i] = (numbers.nextInt(100) + 1);

        myOutput.print(numbers + " ");
        }
    }
    catch (IOException e) {
        System.out.println("Error opening file: " + e);
        System.exit(1);
    }
}    
}

4 个答案:

答案 0 :(得分:0)

myOutput.print(numbers + " ");

您正在此处打印Random班级实例。

您需要执行以下操作:

myOutput.print(numbers.nextInt(100)+ " ");

阅读Random class documentation

编辑:

不,只是array会再次打印类似输出(Object String),如果要输出存储在数组中的随机值,则需要执行以下操作:

myOutput.print(array[i] + " "); 

答案 1 :(得分:0)

Random numbers = new Random();
for (int i = 0; i < array.length; i++)
{
    myOutput.printf("%d\n",numbers.nextInt(100)+1);
}

答案 2 :(得分:0)

如果您以后不打算使用该阵列。如果你这样做会更好:

for (int i = 0; i < 100; i++) {
    myOutput.print(numbers.nextInt(100) + 1);
}

但是如果你以后要使用这个数组。你应该这样做:

for (int i = 0; i < array.length; i++) {
    //get the int from Random Class
    array[i] = (numbers.nextInt(100) + 1);

    myOutput.print(array[i] + " ");
}

由于您正在文件中打印Random类实例。

答案 3 :(得分:0)

替换此行

myOutput.print(numbers + " ");

使用这段代码

myOutput.print(array[i] + " ");

因为新生成的随机数现在出现在array