2014-01-20 2 views
0

Привет, я все еще новичок в java, и я пытаюсь сделать эту программу для расчета обменных курсов. Есть проблема, с которой я, похоже, не выхожу. Я продолжаю получать это сообщение: Исключение в потоке «main» java.util.NoSuchElementException. Может кто-нибудь мне помочь. Я пытаюсь прочитать число и слово в текстовом файле.keep get: Exception in thread "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() и 2 последовательных вызовов sc.next().

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

Второй вызов, очевидно, вызывает исключение, когда последний элемент был прочитан первым вызовом.

0

Вы вызываете Scanner.next дважды в быстрой последовательности - один раз установите переменную s и второй раз, чтобы установить переменную s1. Если нет другой строки для чтения, вы получите NoSuchElementException, как описано в JavaDoc для Scanner.next().

Не похоже, что вы используете вторую переменную, чтобы либо удалить ее, либо защитить ее с помощью 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(); 
}} 
} 
Смежные вопросы