2014-01-20 54 views
0

嗨,我還是新的Java和我試圖讓這個程序來計算匯率。有一個問題,我似乎沒有出去。我一直在得到這個消息:線程「main」中的異常java.util.NoSuchElementException。有人可以幫助我嗎?我正在嘗試閱讀文本文件中的數字和單詞。的愈來愈:異常線程「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(); 


}} 
} 
} 
+1

在這行你得到的例外呢? –

回答

2

你有sc.hasNext()一個呼叫和sc.next() 2個連續的電話。

String s = sc.next(); 
String s1 = sc.next(); 

當第一次調用讀取最後一個元素時,第二次調用顯然會導致異常。

0

您快速連續兩次呼叫Scanner.next - 一次設置變量s,第二次設置變量s1。如果沒有另一個字符串讀,你會得到一個NoSuchElementExceptionScanner.next()在JavaDoc描述。

它看起來並不像你使用第二個變量,要麼將其刪除或用Scanner.hasNext()保護它。

0

使用這個代替:

String s = sc.next(); 
double geld = Double.parseDouble(s); 
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(); 
}} 
} 
相關問題