2016-04-08 8 views
1

Ich versuche, verschiedene Zeilen einer Textdatei zu addieren, jedoch sind nicht alle Zeilen doppelt vorhanden (einige Zeilen haben Sonderzeichen), ich muss alle doppelten Werte addieren. Aber ich bekomme immer wieder dieseFileReader-Klasse, Schnittstelle oder enum erwartet

ERROR:class, interface, or enum expected

für die isDouble Methode. Jede Hilfe würde sehr geschätzt werden!

import java.util.*; 
import java.io.*; 

public class quiz4 
{ 
    public static void main(String[] args) 
    { 
     File input = new File("mystery.txt"); 
     try 
     { 
      double answer = 0; 
      FileReader fr = new FileReader(input); 
      BufferedReader br = new BufferedReader(fr); 
      String currentLine = br.readLine(); 
      while (currentLine != null) 
      { 
       currentLine = br.readLine(); 
       if (isDouble(currentLine)) 
       { 
        double temp = Double.parseDouble(currentLine); 
        answer = currentLine + temp; 
       } 
       else 
       { 
        continue; 
       } 
      } 
     } 
     catch (Exception e) 
     { 
     } 
    } 

    public static boolean isDouble(String cu) 
    { 
     try 
     { 
      double value = Double.parseDouble(cu); 
      return true; 
     } 
     catch (NumberFormatException e) 
     { 
      return false; 
     } 
    } 
} 
+1

'Antwort = currentLine + Temp;' ist falsch. Sie können einem 'Double' keinen' String' zuweisen. Außerdem sieht es so aus, als ob Sie zu viele Klammern haben und Ihre Methode nicht in der Klasse ist. – 3kings

+6

Aufgrund von unsymmetrischen geschweiften Klammern ist Ihre 'isDouble' Methode ** außerhalb ** der Klasse. –

Antwort

1

Zunächst einmal lösen, Ich schlage vor, Sie wirklich eine IDE verwenden wie IntelliJ IDEA, Eclipse usw. Sie werden Sie Ihre Syntaxfehler helfen, zu überprüfen und Sie sehr präzise geben Vorschläge.

Wie die anderen Antworten vorschlagen, hat Ihr Programm mehrere Probleme.

  1. Der erste Buchstabe Ihres class Namens sollte ein Großbuchstabe sein;
  2. Sie können keine String einer Double zuweisen;
  3. Durch unausgewogene geschweiften Klammern, Ihre isDouble Methode ist außerhalb der Klasse

Der folgende Code sollte Ihre Probleme lösen.

public class Quiz4 { 
     public static void main(String[] args) { 
      File input = new File("mystery.txt"); 
      try { 
       double answer = 0; 
       FileReader fr = new FileReader(input); 
       BufferedReader br = new BufferedReader(fr); 
       String currentLine = br.readLine(); 
       while (currentLine != null) { 
        currentLine = br.readLine(); 
        Double curDouble = tryParseDouble(currentLine); 
        if (curDouble != null) { 
         answer += curDouble; 
        } 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

     public static Double tryParseDouble(String str) { 
      try { 
       return Double.parseDouble(str); 
      } catch (Exception e) { 
       return null; 
      } 

     } 
    } 
0

Ihre isDouble(String cu) Methode ist nicht innerhalb der Klasse:

catch(Exception e){} 
    } //closing brace for main method 
} //closing brace for the class 
public static boolean isDouble(String cu){ 

nur sicherstellen, dass die Schließ Klammern nach dieser Methode ausgeglichen sind.

0

Dies wird Ihre Probleme

import java.util.*; 
import java.io.*; 

public class quiz4{ 
    public static void main(String[] args){ 
     File input = new File("mystery.txt"); 
     try{ 
      double answer = 0; 
      FileReader fr = new FileReader(input); 
      BufferedReader br = new BufferedReader(fr); 
      String currentLine = null; 
      while((currentLine = br.readLine()) != null){ 
       if(isDouble(currentLine)){ 
        double temp = Double.parseDouble(currentLine); 
        answer = Double.parseDouble(currentLine) + temp; 
       } 
       else{ 
        continue; 
       } 
      } 
     }catch(Exception e){ 

     } 
    } 

     public static boolean isDouble(String cu){ 
      try { 
      double value = Double.parseDouble(cu); 
      return true; 
     } catch (NumberFormatException e) { 
      return false; 
     } 
    } 

}