2016-03-28 18 views
2

Dize, input.txt dosyamdan ayrıştırmayı denedim, ancak her defasında NumberFormatException öğesini atıyorum. Şu ana kadar sahip olduğum tüm kodları ekledim. Ben de denedim. Java'daki metin dosyalarına çok yeni geldim; bu yüzden burada neyin yanlış olduğu hakkında hiçbir fikrim yok. Ancak, herhangi bir yardım takdir edilecektir. nextLine() yaparkenJAVA'daki bir metin dosyasındaki girişi nasıl ayrıştırıyorsunuz?

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

sorunu ayıklama denedin mi dene ?. 'Num' yazdırmaya çalıştığınızda ne görüyorsunuz? – TheLostMind

cevap

4

Hata yapıyorsunuz. Scanner yapıcısında String nesnesini File nesnesini geçirmelisiniz. "Inputt.txt" dizesini geçirdiğiniz için bu dizeyi ayrıştırmaya çalışıyorsunuz ve sonuç olarak NFE alıyorsunuz. bu

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

0

Sen girişi ile birlikte gelen boşluklara almak gerekir. Herhangi bir whitespaces kurtulmak için trim() işlevini kullanın.

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

Alternatif olarak, nextInt() yerine nextLine() kullanarak deneyebilirsiniz. İşte

parseInt() JAVA Dokümanı:

imzalı ondalık tamsayı olarak dize argümanı ayrıştırır. İlk karakterin bir ASCII eksi işareti '-' ('\ u002D') negatif bir değer veya bir ASCII artı işareti '+' ('\ u002B') belirtmek için olabileceği dışında, dizedeki karakterler ondalık basamak olmalıdır. pozitif bir değer belirtmek için. Oluşan tamsayı değeri, tam olarak argüman ve radix 10 parseInt (java.lang.String, int) yöntemine argümanlar olarak verildiği gibi döndürülür.

+0

.trim denedim ve maalesef çalışmıyor \:. Java'da metin dosyaları yaratmakta çok yeniyim ve bu yüzden giriş metin dosyasındaki tam sayıyı neden ayrıştırmayacağımı merak ediyorum. – SlackStack

+0

Gerçek temel neden bu değil – Rehman

İlgili konular