2015-10-14 21 views
0

我需要編寫一個Groovy腳本來生成.txt文件。每個文件必須包含如下行:Groovy:文件的生成器,具有隨機的nuber行

12:43:10 12345678 -49376952 
// time, variable1, variable2 

首先,我該如何定義一個隨機行數?

第二,如何根據行數覆蓋每行的變量? 我的意思,說它將包含3行,它必須看起來像

time, variable1.1, variable2.1 

time, variable1.2, variable2.2 

time, variable1.3, variable2.3 

我是新手,我會很高興的任何建議!

+0

我糾正了幾個拼寫/格式錯誤。 – Vinz

回答

0

你已經做了一些聰明的事情:你已經把問題分解成幾部分。分解是如何解決問題的。

看看Java的Random類。

你需要的不止一個隨機數:你需要一個介於1和某個最大值之間的值。這個文本文件有多大?一百萬行會好嗎?

時間可以是寫行時的時間戳。它有多獨特?你應該包括小時,分鐘,秒,毫秒,納秒?

變量也是隨機的嗎?我不知道你的意思是覆蓋。

這將在Java中完成。也許它會引導你進入Groovy。我將輸出寫入控制檯;我會留下如何寫作爲一個文件作爲一個練習:

import java.util.Random; 

/** 
* Demo of how to do it in Java 
* User: mduffy 
* Date: 10/14/2015 
* Time: 7:38 AM 
* @link http://stackoverflow.com/questions/33123709/groovy-generator-of-file-with-random-nuber-of-lines/33123830?noredirect=1#comment54060700_33123830 
*/ 
public class RandomDemo { 
    public static void main(String[] args) { 
     int maxLines = new Random().nextInt(15); 
     int numVariables = 2; 
     for (int i = 0; i < maxLines; ++i) { 
      StringBuilder builder = new StringBuilder(1024); 
      long currentNanos = System.nanoTime(); 
      builder.append(currentNanos).append('\t'); 
      for (int j = 0; j < numVariables; ++j) { 
       builder.append("variable-").append(i+1).append('.').append(j+1).append('\t'); 
      } 
      System.out.println(builder.toString()); 
     } 
    } 
} 
+0

感謝您的回答! 設最大行數爲15. 我可以定義time1,variable1像$ variables.no,variable2像$ variables.no2 其中沒有獲得隨機數 也許它可能是一些循環,它會覆蓋這個變量每行,但我不知道如何做到這一點.. 例如,它將是5行 是否有可能,該循環將採取地圖[時間1,變量1,變量2],並將覆蓋5個條目,如 time2,variable1.2,variable2.2 time3,variable1.3,variable2.3 ... time5,variable1.5,variable2.5 –

+0

非常感謝! Groovier still:'out.println「$ {new Date()。format(」HH:mm:ss「)} variable1。$ {i + 1} variable2。$ {i + 1}將嘗試修改groovy的代碼 –

0

這是一個可能更groovier方法。請注意,因爲執行速度非常快,所以每行的時間很可能都是相同的。

int maxLines = new Random().nextInt(20) 
def now 
new File("myFile.txt").withWriter { out -> 
    (1..maxLines).eachWithIndex{n, i -> 
     now = new Date() 
     out.println now.format("HH:mm:ss")+' variable1.'+(i+1)+' variable2.'+(i+1) 
    } 
} 
+0

「' –

+0

甚至更​​groovier:'maxLines.times {i - > out.println」$ {new Date()。format(「HH:mm:ss」)} variable1。$ {i + 1} variable2。$ {我+ 1}「}' –