我有一个从练习随机化器应用程序生成的Java任务,这非常痛苦。说明如下:
使用必须的公共标识符编写名为Stearyl的类 包含两个名为mAmatorial和mSamanid的公共静态方法。该 第一种方法mAmatorial应该接受作为参数字符串(String)。 该字符串将包含要创建的文件的名称。警告: 你必须设置文件位置的路径这个文件应该 具有以下特点:
大小:1077字节
允许的字节列表:byte [] aRetooth = {97,98,99,100,101,102, 103,104,105}。允许的字节列表应设置为static Stearyl类的公共特征命名为aRetooth。文件数据必须是 随机而且是可分的。 (所有字节大致相同 出现次数)。
方法mAmatorial应该返回一个包含long的变量类型 前500字节的总和。 mSamanid的第二种方法必须接受 作为参数一个String(String),它将包含一个文件的名称。 该文件被读入内存(设置如上所述的路径),为此 将记录以下指标:
尺寸
定义的表中包含的每个字节的出现次数 aRetooth表。数据应作为整数数组返回 (int)来自mSamanid。在该表的位置1(例如a [0])将是 文件的大小和剩余的将有数量 每个字节的出现次数(例如,在位置2中出现的次数) 第一个字节,依此类推)。
当我检查任务时,它说:
java.lang.Exception: File was not made correctly in method mAmatorial (wrong size, it should be 1077 bytes)
你知道错误在哪里吗?这是来自java excercise randomizer的练习。这意味着生成器有主要和你发布方法,所以它可以检查你的答案。也许你可以这样使用......
public static void main(String args[]){
Stearyl sl=new Stearyl();
long a=sl.mAmatorial("C:\Users\***\Desktop\java_programming_2\exercises\temp.txt");
System.out.println(a);
int f[]=sl.mSamanid("C:\Users\***\Desktop\java_programming_2\exercises\temp.txt");
for (int i=0;i<f.length;i++){
System.out.println(f[i]);
}
}
我的代码是:
import java.util.Random;
import java.io.*;
public class Stearyl{
public static int fileSize=1077;
public static byte[] aRetooth = {97, 98, 99, 100, 101, 102, 103, 104, 105};
public static long mAmatorial(String filename){
Random random=new Random();
try {
File file1=new File(filename);
boolean success = file1.createNewFile();
if (!success){
file1.delete();
file1.createNewFile();
}
} catch (IOException e) {
}
BufferedOutputStream out = null;
long sumFirst500=0;
try {
out = new BufferedOutputStream(new FileOutputStream(filename));
for (int i=0;i<fileSize;i++){
byte a=aRetooth[random.nextInt(aRetooth.length)];
if (i<500) {
sumFirst500+=a;
}
out.write(a);
}
out.close();
} catch (IOException e) {
}
return sumFirst500;
}
public static int[]mSamanid(String filename){
int[]pinakas=new int[aRetooth.length+1];
int length=0;
byte[] bytes=null;
try {
File file1=new File(filename);
InputStream is = new FileInputStream(file1);
length = (int) file1.length();
bytes = new byte[(int)length];
// Read in the bytes
int offset = 0;
int numRead = 0;
while (offset < bytes.length
&& (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
}
// Ensure all the bytes have been read in
if (offset < bytes.length) {
throw new IOException("Could not completely read file "+file1.getName());
}
is.close();
} catch (IOException e) {
}
pinakas[0]=length;
for (int j=0;j<aRetooth.length;j++){
pinakas[j+1]=0;
}
for (int i=0;i<bytes.length;i++){
for (int j=0;j<aRetooth.length;j++){
if (bytes[i]==aRetooth[j]) pinakas[j+1]++;
}
}
return pinakas;
}
}