2016-03-28 10 views
2

Ich habe versucht, die Zeichenfolge aus meiner input.txt-Datei zu analysieren, aber ich bekomme die NumberFormatException jedes Mal geworfen. Ich habe den ganzen Code hinzugefügt, den ich bis jetzt habe. Ich habe versucht. Trim auch. Ich bin sehr neu in Textdateien in Java; Daher habe ich keine Ahnung, was hier falsch ist. Allerdings wäre jede Hilfe hilfreich.Wie parsen Sie Eingaben aus einer Textdatei in JAVA?

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.PrintWriter; 
import java.util.InputMismatchException; 
import java.util.NoSuchElementException; 
import java.util.Scanner; 

public class Lab5_Exceptions_Redo extends Exception { 

    public static void main(String[] args) throws FileNotFoundException { 

     String file = "inputt.txt"; 
     String file1 = "outputt.txt"; 
     String file2 = "errorr.txt"; 

     PrintWriter errorr = new PrintWriter(file2); 

     PrintWriter inputt = new PrintWriter(file); 
     inputt.println(15951); 
     // int whatever = Integer.parseInt(file); 
     // System.out.print(whatever); 
     inputt.close(); 
     Scanner scan = new Scanner(file); 
     String number = scan.nextLine(); 
     int num = Integer.parseInt(number.trim()); 
     System.out.printf("%d", num); 

     PrintWriter outputt = new PrintWriter(file1); 
     outputt.println(num); 
     outputt.close(); 
     // inputt.close(); 

     scan.close(); 
     // System.out.printf("%d", num); 

     try { 

     } catch (InputMismatchException e) { 
      errorr.println("There was an input mismatch error."); 
     } catch (NoSuchElementException e) { 
      errorr.println("There is no such element."); 
     } catch (UnsupportedOperationException e) { 
      errorr.println("An unsupported operation occured."); 
     } catch (NumberFormatException e) { 
      System.out.println(e.getMessage()); 
      e.printStackTrace(); 
     } 
     errorr.close(); 

    } 
} 
+0

Haben Sie versucht, das Problem Debuggen ?. Was siehst du, wenn du "num" druckst? – TheLostMind

Antwort

4

Sie machen einen Fehler. In Scanner Konstruktor sollten Sie File Objekt nicht String Objekt übergeben. Da Sie die Zeichenfolge "input.txt" übergeben, wird versucht, diese Zeichenfolge zu analysieren, und Sie erhalten NFE. Versuchen Sie, diese

Scanner scan = new Scanner(new File(file));

0

Sie müssen die Leerzeichen zusammen mit dem Eingang bekommen, während nextLine() tun. Verwenden Sie die Funktion trim(), um alle Leerzeichen zu entfernen.

int num = Integer.parseInt(number.trim()); 

Alternativ können Sie versuchen nextInt() statt nextLine() verwenden.

Hier ist die JAVA Doc von parseInt():

Analysiert das String-Argument als signierte Dezimalzahl. Die Zeichen in der Zeichenfolge müssen alle Dezimalstellen sein, außer dass das erste Zeichen ein ASCII-Minuszeichen '-' ('\ u002D') sein kann, um einen negativen Wert oder ein ASCII-Pluszeichen '+' ('\ u002B') anzugeben. um einen positiven Wert anzuzeigen. Der resultierende Integer-Wert wird zurückgegeben, genau so, als ob das Argument und der Radix 10 als Argumente für die Methode parseInt (java.lang.String, int) angegeben würden.

+0

Ich habe versucht, die. Trim, und leider funktioniert es nicht \:. Ich bin sehr neu beim Erstellen von Textdateien in Java, und deshalb bin ich so verwirrt, dass es die ganze Zahl nicht aus der Eingabetextdatei analysiert. – SlackStack

+0

Dies ist nicht die eigentliche Ursache – Rehman

Verwandte Themen