2014-09-28 2 views
-1

Итак, я делаю домашнее задание для своего класса AI и приведен код, приведенный ниже. Все, что мне нужно сделать, это немного изменить его, но это в стороне, я могу это сделать. Мне нужна помощь, мне сказали, что мне нужно запустить программу с помощью ввода из такого файла: ReflexRover < < filename>Запуск программы с файлом в 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()); 
} 
} 

} 

Хорошо позвольте мне уточнить мой вопрос. Это то, что я сделал: я нажимаю run, появляется консоль, я могу вводить целые числа по одному без проблем. Мне просто нужно знать, как заставить программу работать, когда я делаю RoverSampleSensor. Файл уже находится на уровне моего src. Каждый раз, когда я пытаюсь, он ловит мое исключение и говорит: «О! Я, кажется, получил ошибку ввода-вывода, читающую файл ». Я не могу распечатать трассировку стека, потому что я не должен изменять эту часть кода. Я не должен ударять, пока не попытаюсь отправить файл ? Есть ли другой способ, которым я должен его запускать?

+0

Добавить stac ktrace для ошибки, которую вы видите. – mkobit

+0

Можете ли вы сказать, что такое ошибка? Я думаю, что, вероятно, он не может найти файл из-за ошибок пути. – Troveldom

+0

Вы можете перейти к запуску конфигураций в Eclipse, а затем изменить вкладку «arguments». Вставьте '-file/path/to/file/file.txt'. Это должно передать правильные аргументы вашему коду. –

ответ

0

Если вы работаете в Eclipse и не собираетесь экспортировать проект в файл jar, простым решением является размещение вашего файла в корне project (на том же уровне папки src) .Если вы это сделаете, путь к файлу будет состоять только из его имени.

Если вы запустите свою программу с помощью команды консоли, вы должны указать путь к ней файл в соответствии с текущей папкой в ​​консоли.

Смежные вопросы