Итак, я делаю домашнее задание для своего класса 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. Каждый раз, когда я пытаюсь, он ловит мое исключение и говорит: «О! Я, кажется, получил ошибку ввода-вывода, читающую файл ». Я не могу распечатать трассировку стека, потому что я не должен изменять эту часть кода. Я не должен ударять, пока не попытаюсь отправить файл ? Есть ли другой способ, которым я должен его запускать?
Добавить stac ktrace для ошибки, которую вы видите. – mkobit
Можете ли вы сказать, что такое ошибка? Я думаю, что, вероятно, он не может найти файл из-за ошибок пути. – Troveldom
Вы можете перейти к запуску конфигураций в Eclipse, а затем изменить вкладку «arguments». Вставьте '-file/path/to/file/file.txt'. Это должно передать правильные аргументы вашему коду. –