所以我的目标是创建一个读取文件名的类 create作为第一个命令行参数。 (用。覆盖任何文件 同名)。
然后我应该读取一个整数值作为第二个命令 行参数。
程序应该生成尽可能多的随机数 在第二个命令行参数中指定的大小 在1到1000之间并将它们写入文件。
完成程序的最后一步是你必须只写5 每行上的数字,然后开始一个新的行。 (最后一行可能 少于5个数字。)在一行上划分数字 与&字符。应该分隔一行的结尾 #character。不应明确指出其他分隔符 使用
这是我的代码:
import java.util.*;
import java.io.*;
public class RandomNumGen{
static final int SEED=152;
public static void fileStore( String file, int number )
{
if (file == null || number <=0){
throw new IllegalArgumentException("Error");
}
String line = "%s&%s&%s&%s&%s#\n";
BufferedWriter buffWriter = null;
Random rand = new Random(SEED);
try{
buffWriter = new BufferedWriter(new FileWriter(file));
int x = number / 5;
int j = number - x * 5;
for (int i=0; i<x; i++)
{
int number1 = rand.nextInt(1000-1+1)+1;
int number2 = rand.nextInt(1000-1+1)+1;
int number3 = rand.nextInt(1000-1+1)+1;
int number4 = rand.nextInt(1000-1+1)+1;
int number5 = rand.nextInt(1000-1+1)+1;
String str = String.format(line,number1,number2,number3,number4,number5);
buffWriter.write(str);
System.out.println(str);
}
StringBuilder str = new StringBuilder();
for (int i=0; i<j; i++)
{
str.append(rand.nextInt(1000-1+1)+1);
str.append("&");
}
str.deleteCharAt(str.length()-1);
str.append("#");
String lineStr = str.toString();
buffWriter.write(lineStr);
System.out.print(lineStr);
buffWriter.close();
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[]args){
fileStore("output.txt",14);
}
}
我的程序似乎工作正常但是当我使用以5或0结尾的int时 我得到一个java.lang.StringIndexOutOfBoundsException:字符串索引 范围:-1。
这是我的输出:
286&112&602&201&763#
318&820&768&787&897#
707&54&927&40#
任何改进我的代码的提示都会很棒。
答案 0 :(得分:0)
嗯,使用格式并不是一个坏主意,但我会说KISS:
try{
BufferedWriter buffWriter = new BufferedWriter(new FileWriter(file));
StringBuilder str = new StringBuilder();
for (int i=0; i<number; i++)
{
int n = rand.nextInt (1000) + 1;
if (i % 5 == 4 || i == number-1)
str.append (n + "#\n");
else
str.append (n + "&");
}
String lineStr = str.toString();
buffWriter.write (lineStr);
System.out.print (lineStr);
buffWriter.close ();
}
从0开始计算
(i % 5 == 4 || i == number-1)
对于每一行的最后一个元素和最后一个数字都是如此。