在java中使用文件运行程序

在java中使用文件运行程序,java,Java,好的,我正在为我的AI课程做作业,下面列出的代码已经给出了。我所需要做的只是稍微修改一下,但这是无关紧要的,我可以做到。我需要的帮助是,有人告诉我,我必须使用以下文件的输入来运行程序:reflecrover

好的,我正在为我的AI课程做作业,下面列出的代码已经给出了。我所需要做的只是稍微修改一下,但这是无关紧要的,我可以做到。我需要的帮助是,有人告诉我,我必须使用以下文件的输入来运行程序:reflecrover<

当我运行程序时,我可以给它一个默认构造函数接受的数字,一切都很好。但当我给它一个文件名时,它说无法打开。我不知道如何很好地使用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());
}
}

}
import java.io.*;
导入java.lang.*;
/**
*RovingSampleSensors:用于从文件中读取样本感知的类
*并一次一个地展示它们
*
*@作者
*@version 1.1
*
*允许的contstructor的标准输入版本
*/
公共类探测器采样传感器{
//文件
私有缓冲读取器myFile;
/**
*从文件创建传感器对象
*@param filename读取数据的文件
*/
公共RoverSampleSensor(字符串文件名){
试一试{
myFile=newbufferedreader(newfilereader(filename));
}捕获(例外e){
System.err.println(“哎呀!我好像无法加载文件\”+filename+“\”,文件放在正确的位置了吗?”);
系统出口(1);
}
}
/**
*从标准输入创建传感器对象
*/
公共RoverSampleSensor(){
试一试{
myFile=new BufferedReader(新的InputStreamReader(System.in));
}捕获(例外e){
System.err.println(“哎呀!我好像无法从标准输入中读取数据!”);
系统出口(1);
}
}
/**
*获取下一个示例
*@return SamplePercept包含感知器的SamplePercept对象
*/
公共SamplePercept getPercept(){
弦线;
试一试{
line=myFile.readLine();
if(myFile==null){
返回null;
}else if(行==null){
试一试{
myFile.close();
}捕获(例外e){
}
myFile=null;
返回null;
}否则{
返回新的SamplePercept(行);
}
}捕获(例外e){
System.err.println(“Ooops!我似乎在读取文件时遇到了I/o错误。”);
系统出口(1);
}
返回null;
}
/**
*运行读取例程的测试,打印出文件的所有感知
*
*用法:java RoverSampleSensor-文件
*/
公共静态void main(字符串参数[]){
如果(参数长度!=0&&
(args.length!=2 | |(!args[0]。等于(“-file”)){
System.err.println(“用法:RoverSampleSensor-file”);
系统出口(1);
}
RoverSampleSensor rss=null;
样本感知器;
如果(参数长度==0){
rss=新的RoverSampleSensor();
}否则{
rss=新的RoverSampleSensor(参数[1]);
}
而((sp=rss.getPercept())!=null){
System.out.println(“感知:+sp.value());
}
}
}

好的,请允许我进一步完善我的问题。这就是我所做的:我点击run,控制台弹出,我可以一个接一个地输入整数,没有问题。我只需要知道当我做RoverSampleSensor时如何让程序工作。该文件已与我的src处于同一级别。每次我尝试时,它都会捕捉到我的异常并说“哎呀!我似乎在读取文件时遇到了I/o错误“。我不能打印堆栈跟踪,因为我不应该更改代码的这一部分。在我尝试发送文件之前,我不应该点击run吗?有没有其他的运行方式?

如果您在Eclipse下工作,并且不打算将项目导出到jar文件中,一个简单的解决方案是将文件放在项目的根目录下(与src文件夹处于同一级别)。如果这样做,文件的路径将只包含在其名称中


如果使用console命令启动程序,则必须根据控制台中的当前文件夹提供文件的路径。

为您看到的错误添加stacktrace。您能告诉错误是什么吗?我认为可能是由于路径错误,它找不到文件。您可以在Eclipse中运行配置,然后修改“arguments”选项卡。插入
-file/path/to/file/file.txt
。这将向代码传递正确的参数。在catch块中,添加e.printStackTrace()并用错误更新问题