我的任务是:
group_stat()
,该类包含三项信息:速度,时间,距离。 TravelInfo
,该方法根据距离和速度(回想起来:时间=距离/速度)计算到达目的地的时间calcTime()
个对象的ArrayList。TravelInfo
个对象中TravelInfo
对象上调用calcTime()
方法。每次运行程序时都会出现错误
线程“ main”中的异常java.util.NoSuchElementException
除此错误外,我认为除了调用我的方法外,其他所有操作我都做对了,但我仍然没有格式化输出文件(不太确定如何格式化)。出现此错误时,我无法继续。
这是我的TravelInfo
方法:
main()
还有我的public static void main(String[] args) throws IOException {
Scanner keyboard = new Scanner(System.in);
ArrayList<TravelInfo> list = new ArrayList<>();
System.out.println("What is the name of the file?");
String filename = keyboard.nextLine();
File f = new File(filename);
Scanner inputFile = new Scanner(f);
while(inputFile.hasNext()) {
int s = inputFile.nextInt();
int d = inputFile.nextInt();
int t = inputFile.nextInt();
TravelInfo p = new TravelInfo(s, d, t);
list.add(p);
TravelInfo cls = new TravelInfo(s,d,t);
cls.calcTime(t);
cls.calcTime(s);
cls.calcTime(d);
// System.out.println("Time is " + cls.calcTime(t));
/*for(int i=0; i<list.size(); i++) {
list.get(i).print();
*/ }
for(TravelInfo k : list)
System.out.println(k);
PrintWriter outputFile = new PrintWriter("Data.txt");
outputFile.println(list);
//outputFile.println();
outputFile.close();
}
}
班级
TravelInfo
答案 0 :(得分:0)
您应该进行更多的验证,并且永远不要盲目使用nextXXX()
方法-类似于
while(true)
{
if (!inputFile.hasNextInt()) {
System.err.println("Reading file failed - invalid format (s)");
break;
}
int s = inputFile.nextInt();
System.out.println("Reading s = " + s);
if (!inputFile.hasNextInt()) {
System.err.println("Reading file failed - invalid format (d)");
break;
}
int d = inputFile.nextInt();
System.out.println("Reading d = " + d);
if (!inputFile.hasNextInt()) {
System.err.println("Reading file failed - invalid format (t)");
break;
}
int t = inputFile.nextInt();
System.out.println("Reading t = " + t);
// Do some stuff
}
这样,您将避免使用NoSuchElementException
,并且应用程序将正常终止。您将在控制台上获得调试输出。它还会打印出从文件中确切读取的内容。
答案 1 :(得分:0)
正如多利安所说,您缺少一些验证:
button.addEventListener("click", function () {
for (var x = 0; x <= password.length; x++) {
if (input.value == password[x]) {
alert("welcome"); // or take document.getElementById('someid').innerHTML = 'welcome!'
return;
}
}
alert("wrong");
});
我个人不喜欢'while(true)'东西,所以这是我的版本。
while(inputFile.hasNext()) // Tells you there is "at least" 1 more element.
{
int s = inputFile.nextInt(); // Good
int d = inputFile.nextInt(); // Not good if 's' has taken the last element
int t = inputFile.nextInt(); // Same as above
// rest of the code here...
}