gpt4 book ai didi

java - java eclipse中的NoSuchElementException问题

转载 作者:太空宇宙 更新时间:2023-11-04 09:59:23 24 4
gpt4 key购买 nike

我使用Java eclipse,它显示有:

java.util.NoSuchElementException.

谁能帮我解决这个问题吗?

错误似乎发生在:

String city = scin3.next();

控制台显示:

java.util.Scanner.throwFor and java.util.Scanner.next.

下面是我的代码:

package p1;

import java.io.File;
import java.io.IOException;
import java.util.*;

class Connection {
private String departure;
private String arrival;

Connection () {};
Connection (String departure, String arrival) {
this.departure = departure;
this.arrival = arrival;
}
String getDeparture() {return departure;}
String getArrival() {return arrival;}
}

public class H4_20160235_1 {
public static void main(String[] args)
{
ArrayList<Connection> list = new ArrayList<Connection>();
File file = new File("connection.txt");
Scanner scin1;
if (file.exists()) {
try {
scin1 = new Scanner(file);
while (scin1.hasNext()) {
String departure = scin1.next();
String arrival = scin1.next();
Connection c = new Connection(departure, arrival);
list.add(c);
}
scin1.close();
} catch (IOException e) {}
}
else {
System.out.println("connection.txt not exist!!");
}

LinkedList<String> route = new LinkedList<String> ();

System.out.println("---------------------------------------");
System.out.println("Welcome to Flight Tour NORANG Ballon !!");
System.out.println("---------------------------------------");
System.out.println();

System.out.println("<<< Flight Information >>>");
for (Connection l: list) {
System.out.printf("%s -> %s", l.getDeparture(), l.getArrival());
System.out.println();
}
System.out.println();
Set<String> set = new LinkedHashSet<String>();
for (int a=0; a<list.size(); a++)
set.add(list.get(a).getDeparture());

System.out.println("---------------------------------------");
System.out.println("<<< Cities in the DB >>>");
System.out.println("---------------------------------------");
for (String city: set) {
System.out.printf("%s", city);
System.out.println();
}
System.out.println("---------------------------------------");
System.out.println();

System.out.println("Let's plan a round-trip route!");
Scanner scin2 = new Scanner(System.in);
System.out.print("Enter the starting city : ");
String departure = scin2.next();
scin2.close();
route.add(departure);
System.out.printf("From %s you can fly directly to :", departure);
System.out.println("\n");

ArrayList<String> cities = new ArrayList<String> ();
for (Connection l : list) {
if (departure.equals(l.getDeparture())) {
cities.add(l.getArrival());
System.out.println(l.getArrival());
}
}
System.out.println();
System.out.println("---------------------------------------");

int i = 0;
while (true) {
Scanner scin3 = new Scanner(System.in);
System.out.printf("Where do you want to go from %s?", route.get(i));
String city = scin3.next();
scin3.close();
i++;
if (cities.contains(city) == false)
System.out.println("***** You can't get to that city by a direct flight. *****");
if (route.contains(city) == true)
break;
ArrayList<String> cities2 = new ArrayList<String>();
for (Connection l: list) {
if (city.equals(l.getDeparture())) {
cities2.add(l.getArrival());
System.out.println(l.getArrival());
}
}
}

System.out.println("=====================================");
System.out.println("<<< Your Final Route >>>");
Iterator <String>iter = route.iterator();
while (iter.hasNext()) {
String temp = (String)iter.next();
System.out.println(temp);
}
System.out.println("---------------------------------------");
System.out.println();
System.out.println("Have a nice Trip with NORANG Ballon ~");
}

}

下面是我的connection.txt 文件。

SanJose SanFrancisco 
SanJose Anchorage
NewYork Anchorage
NewYork SanJose
NewYork SanFrancisco
NewYork Honolulu
Anchorage NewYork
Anchorage SanJose
Honolulu NewYork
Honolulu SanFrancisco
Denver SanJose
SanFrancisco NewYork
SanFrancisco Honolulu
SanFrancisco Denver

最佳答案

您必须检查是否有要获取的新 token ,其中 hasNext()方法,在每次调用 next() 之前方法。

就像您在 next() 的文档中看到的那样方法:

Finds and returns the next complete token from this scanner. Acomplete token is preceded and followed by input that matches thedelimiter pattern. This method may block while waiting for input toscan, even if a previous invocation of hasNext() returned true. [...]

NoSuchElementException - if no more tokens are available

并在 hasNext() 中具体说明方法:

Returns true if this scanner has another token in its input. This method may block while waiting for input to scan. The scanner does notadvance past any input.

此外,为了改进您的源代码,您应该在循环之外一次性实例化您的扫描仪。

关于java - java eclipse中的NoSuchElementException问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53691481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com