好了,所以我做的功課我的AI類和代碼運行程序我在下面列出給出。我需要做的只是稍微修改一下,但那不重要,我可以做到這一點。我需要幫助的是我被告知我必須從這樣的文件輸入運行程序:ReflexRover < <文件名>在Java文件
當我運行該程序時,我可以給它個別的數字,默認的構造函數接受和一切很好。但是,當我給它一個文件名稱說它未能打開。我不知道如何使用Eclipse,所以有一種特殊的方式,我應該運行程序來發送文件?
注:有一個與代碼本身
import java.io.*;
import java.lang.*;
/**
* RovingSampleSensors: A class for reading sample perceptions from a file
* and presenting them one at a time
*
* @author
* @version 1.1
*
* allowed stdin version of contstructor
*/
public class RoverSampleSensor {
// File
private BufferedReader myFile;
/**
* Creates Sensors object from file
* @param filename The file that data is read from
*/
public RoverSampleSensor(String filename) {
try {
myFile=new BufferedReader(new FileReader(filename));
} catch (Exception e) {
System.err.println("Ooops! I can't seem to load the file \""+filename+"\", do you have the file in the correct place?");
System.exit(1);
}
}
/**
* Creates Sensors object from standard input
*/
public RoverSampleSensor() {
try {
myFile=new BufferedReader(new InputStreamReader(System.in));
} catch (Exception e) {
System.err.println("Ooops! I can't seem to read from the standard input!");
System.exit(1);
}
}
/**
* Gets the next sample perception
* @return SamplePercept A SamplePercept object containing the percept
*/
public SamplePercept getPercept() {
String line;
try {
line=myFile.readLine();
if (myFile==null) {
return null;
} else if (line==null) {
try {
myFile.close();
} catch (Exception e) {
}
myFile=null;
return null;
} else {
return new SamplePercept(line);
}
} catch (Exception e) {
System.err.println("Ooops! I seem to have gotten an i/o error reading the file.");
System.exit(1);
}
return null;
}
/**
* Run a test of the reading routines, prints out all percepts of the file
*
* Usage: java RoverSampleSensor -file <filename>
*/
public static void main(String args[]) {
if (args.length!= 0 &&
(args.length != 2 || (! args[0].equals("-file")))) {
System.err.println("Usage: RoverSampleSensor -file <filename>");
System.exit(1);
}
RoverSampleSensor rss=null;
SamplePercept sp;
if (args.length==0) {
rss=new RoverSampleSensor();
} else {
rss=new RoverSampleSensor(args[1]);
}
while((sp=rss.getPercept())!=null) {
System.out.println("Percept: "+sp.value());
}
}
}
好了讓我改進我的問題沒問題。這就是我所做的:我點擊運行,彈出控制檯,我可以逐個輸入整數沒問題。當我做RoverSampleSensor時,我只需要知道如何讓程序工作。該文件已經與我的src處於同一級別。每當我嘗試它捕捉我的異常,並說「」哎呀!我似乎已經得到了一個I/O錯誤讀取文件。」我不能打印堆棧跟蹤,因爲我不應該改變代碼的部分。難道我不應該打運行之前,我嘗試給它發送文件?是否有不同的方式,我應該運行呢?
添加STAC ktrace爲您所看到的錯誤。 – mkobit 2014-09-28 21:56:46
你能告訴錯誤是什麼嗎?我想這可能是它無法找到文件,因爲路徑錯誤 – Troveldom 2014-09-28 21:56:53
你可以去在Eclipse中運行配置,然後再修改「參數」選項卡。插入'-file/path/to/file/file.txt'。這應該將正確的參數傳遞給你的代碼。 – 2014-09-28 21:57:51