嗨,我还是Java的新手,我正试图让这个程序来计算汇率。有一个问题,我似乎没有出去。我继续收到此消息:线程“main”java.util.NoSuchElementException中的异常。有人可以帮助我。我正在尝试在文本文件中读取数字和单词。
import java.util.*; import java.io.*; import java.text.*; public class Main { public static final double dollarNaarEuro = 1*0.74; public static final double yenNaarEuro = 1*0.071; public static final double pondNaarEuro = 1*1.21; public static final double oreNaarEuro = 1*0.11; public static void main(String[] arg) throws IOException { File f = new File("test.txt"); if (f.exists() && f.isFile()) { Scanner sc = new Scanner(f); sc.useDelimiter("\\s* \\s*"); while (sc.hasNext() ) { String s = sc.next(); String s1 = sc.next(); double geld = Double.parseDouble(s1); s = s.replace("$", "Dollar"); s = s.replace("E", "Euro"); s = s.replace("Y", "Yen"); s = s.replace("B", "British Pound"); s = s.replace("O", "Ore"); System.out.println("Deze bedragen staan in de file:"+s); /* int geld = 1; switch (geld) { case 1: System.out.println("Dollar"); break; case 2: System.out.println("Euro"); break; case 3: System.out.println("Yen"); break; case 4: System.out.println("British Pound"); break; case 5: System.out.println("Ore"); break; } }*/ sc.close(); }} } }
答案 0 :(得分:2)
您有一次sc.hasNext()
来电和sc.next()
的两次连续来电。
String s = sc.next();
String s1 = sc.next();
第二次调用显然会在第一次调用读取最后一个元素时导致异常。
答案 1 :(得分:0)
您快速连续两次致电Scanner.next
- 一次设置变量s
,另一次设置变量s1
。如果没有其他字符串可供阅读,您将获得NoSuchElementException
,如Scanner.next()的JavaDoc中所述。
看起来您不会使用第二个变量,因此请将其删除或使用Scanner.hasNext()保护它。
答案 2 :(得分:0)
请改用:
String s = sc.next();
double geld = Double.parseDouble(s);
答案 3 :(得分:0)
谢谢它现在适用于第一部分。现在我可以继续其余的了。
import java.util.*; import java.io.*; public class Main { public static void main(String[] arg) throws IOException { File f = new File("test.txt"); if (f.exists() && f.isFile()) { Scanner sc = new Scanner(f); sc.useDelimiter("\\s* \\s*"); while (sc.hasNext()) { String s = sc.next(); s = s.replace("$", "Dollar"); s = s.replace("E", "Euro"); s = s.replace("Y", "Yen"); s = s.replace("B", "British Pound"); s = s.replace("O", "Ore"); System.out.println(sc.next() +" "+ s); } sc.close(); }} }