簡體   English   中英

將隨機數組輸出到文件

[英]Outputting a randomized array to a file

我正在嘗試編寫一個程序,該程序采用200個數字(1-200)組成的數組,將它們隨機化,然后將這些數字輸出到文本文件中。

我整天都在苦苦掙扎,我不知道為什么什么都不起作用。

主要方法:

public static void main (String[] args) 
{
    int[] numbers= new int [201];

    for (int i=0; i < numbers.length; i++)
    {
        numbers[i]=i;

    }
}//end main method

隨機化方法:

public static int[] randomizeArray(int[] numbers) 
{
    Random gen= new Random(10);

    for (int i=0; i < numbers.length; i++)
    {
        int n= gen.nextInt(200);
        numbers[i]=n;
    }

    return numbers;

}//end randomizeArray method

以及打印方法:

public static int[] outputArray(int[] numbers) throws IOException
{

    FileOutputStream output;

    output= new FileOutputStream("RandomOut.txt");

    new PrintStream(output).println(randomizeArray(numbers));

    output.close();

    return numbers;

}//end method outputArray

任何幫助都將非常有用,我知道我忽略了某些事情或做錯了什么。

您不應該在main方法的末尾調用outputArray嗎?

您的問題之一是線路:

new PrintStream(output).println(randomizeArray(numbers));

這可能會打印出類似以下內容:

[I@10769dd

是? 您需要編寫一個for循環來輸出數字,例如:

for (int i=0; i < numbers.length; i++) {
    new PrintStream(output).println(numbers[i]);
}

除了您不想在循環中每次都創建PrintStream之外。

1)您需要使用Arrays.toString(int[] arr)來打印該數組。

2)如果您打算對數組輸入進行重新排序,則要求代碼非常不同。 否則,請放棄輸入並使用新數組。

3)調用您的助手方法!

編輯:添加了此偽代碼:

boolean[] used=new boolean[200];
make old[] and new[]
for(i=0;i<200;i++){
    int n=random number from 0 to 199;
    while(used[n]) n=(n+1)%200;
    new[i]=old[n];
    used[n]=true;
}
return new;

您的main方法會初始化201個元素的數組(而不是200個元素),並且對此數組不執行任何操作。 因此很明顯,沒有隨機化,現在可以寫入任何文件。 main方法應先調用randomizeArray然后再調用outputArray

main中數組元素的初始化是沒有用的,因為元素將通過randomizeArray方法重新初始化。 順便說一下,此方法不需要返回任何內容。

最后, outputArray方法應該遍歷數組,並遍歷每個元素。 流應在finally塊中關閉。 它也不應該返回任何東西。

無法抗拒...

    String filename = "random200.txt";
    List<Integer> numbers = new ArrayList<Integer>();
    for (int i = 1; i < 201; i++)
    {
        numbers.add(i);
    }
    StringBuilder sb = new StringBuilder();
    while (!numbers.isEmpty())
    {
        int position = new SecureRandom().nextInt(numbers.size());
        Integer randomNumber = numbers.remove(position);
        sb.append(randomNumber + "\n");
    }
    try
    {
        Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), "UTF8"));
        out.append(sb.toString());
        out.close();
    }
    catch (Exception ex)
    {
        throw new RuntimeException(ex);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM