2017-11-29 11 views
-1

ファイルを読み込んでコンソールにデータを出力する必要がありますが、このエラーメッセージが表示されるという問題があります。スレッド "main" java.lang.NumberFormatException:入力文字列の場合: "UNKNOWN"私は整数として最大の長さを入れましたが、どうやってそれを文字列としても入れますか?整数と文字列を持つデータをテキストファイルに読み込みます - Java

は、ここで私がこれまで行っているものです:

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

public class Task1 { 
    public static void main(String[] args) {   

     List<Person> personFile = new ArrayList<>(); 

     try {    
      BufferedReader br = new BufferedReader(new FileReader("people-data.txt")); 
      String fileRead = br.readLine(); 
      while (fileRead != null) { 
       String[] peopleData = fileRead.split(":"); 
       String commonName = personData[0]; 
       String latinName = personData[1]; 
       int maximumLength = Integer.parseInt(personData[2]); 
       Person personObj = new Person(commonName, latinName, maximumLength); 
       personFile.add(personObj); 
       fileRead = br.readLine(); 
      } 
      br.close(); 
     } 

     catch (FileNotFoundException ex) {    
      System.out.println("File not found!"); 
     } 

     catch (IOException ex) {    
      System.out.println("An error has occured: " + ex.getMessage()); 
     } 

     System.out.println(personFile); 
    } 
} 

人クラス:

import java.util.*; 

public class Person1 { 

    private String commonName; 
    private String latinName; 
    private int maximumLength; 

    public Person1(String personName, String latinName, int maximumLength) { 
     this.commonName = personName; 
     this.latinName = latinName; 
     this.maximumLength = maximumLength; 
    } 

    public String getCommonName() { 
     return commonName; 
    } 

    public String getLatinName() { 
     return latinName; 
    } 

    public int getMaximumLength() { 
     return maximumLength; 
    } 

    @Override 
    public String toString() {   
     return null; 
    } 
} 

テキストファイル:

Alisha Khan:Cephaloscyllium ventriosum:100 
Jessica Lane:Galeocerdo cuvier:UNKNOWN 
Michael Brown:Sphyrna mokarren:600 
... 

答えて

0

入力ファイルのこの行:

Jessica Lane:Galeocerdo cuvier:UNKNOWN 

はあなたのコードでは、この行に問題を引き起こしている:

int maximumLength = Integer.parseInt(personData[2]); 

parseIntUNKNOWNNumberFormatExceptionをスローしますので。この場合、あなたがしたいことを決める必要があります。たとえば、このコードでは、デフォルト値に-1無効な整数に遭遇したときmaximumLengthを維持します:

int maximumLength = -1; 
try { 
    int maximumLength = Integer.parseInt(personData[2]); 
} catch (NumberFormatException e) { 
} 
+0

私はそれがUNKNOWNとしてプリントアウトしたい、私がするSystem.out.printlnを使用する必要がありますでしょうか? – User786

+1

確かに、印刷のポイントに達すると、値が-1(または "UNKNOWN"の解析時間で選択した固定値)であるかどうかをチェックし、-1の場合は "UNKNOWN"を出力し、そうでなければ印刷する実際の値 – jingx

0

あなたがUNKNOWNのご大会あなたのコードを教えなければなりません。現在のところ、コードは数値として扱います。

関連する問題