2014-09-28 56 views
-1

好了,所以我做的功課我的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錯誤讀取文件。」我不能打印堆棧跟蹤,因爲我不應該改變代碼的部分。難道我不應該打運行之前,我嘗試給它發送文件?是否有不同的方式,我應該運行呢?

+0

添加STAC ktrace爲您所看到的錯誤。 – mkobit 2014-09-28 21:56:46

+0

你能告訴錯誤是什麼嗎?我想這可能是它無法找到文件,因爲路徑錯誤 – Troveldom 2014-09-28 21:56:53

+0

你可以去在Eclipse中運行配置,然後再修改「參數」選項卡。插入'-file/path/to/file/file.txt'。這應該將正確的參數傳遞給你的代碼。 – 2014-09-28 21:57:51

回答

0

如果你的Eclipse下工作,並且不打算將項目導出在一個jar文件,一個簡單的解決辦法是把你的文件在的根項目(在文件夾src的同一級別)如果這樣做,文件的路徑將只包含其名稱

如果使用控制檯命令啓動程序,則必須提供因此文件在控制檯當前文件夾。