簡體   English   中英

如何從帶有int和String元素的txt文件中讀取一行?

[英]How to read a line from a txt file with int and String elements?

我正在嘗試通過閱讀txt文件來創建列表。 例如:

12345; Mary Jane ; 20
12365; Annabelle Gibson; NA

每行包含:數字; 名稱; 等級(等級可以是字符串或整數)

我創建了以下方法;

public static  List <Pauta>leFicheiro( String nomeF) throws       FileNotFoundException{
    List<Pauta> pautaT = new LinkedList<Pauta>();
    try {
    Scanner s = new Scanner(new File (nomeF));
        try{
            List<Pauta> pautaS =pautaT;
            while ( s.hasNextLine()){
                String line = s.nextLine();
                String tokens[]= line.split(";");
                if(s.hasNextInt()) {
                    System.out.println ("next int = " + s.nextInt());
            }
                pautaS.add(new Pauta (s.nextInt(), tokens[1],tokens[2]);
            }
            pautaT = pautaS;
        }
    finally {
        s.close();
    }
    }
        catch (FileNotFoundException e){
            e.printStackTrace();
        }
        catch (ParseException e){
            e.printStackTrace();
        }       
    return pautaT;
}

Pauta是一類作為參數(int,String,String)接收的類,我認為將Grade作為一個String使其更簡單,但是如果您對如何通過使用String或int來創建列表(主要目標)有想法我會很感激。

現在的問題是:部分s.nextInt()返回錯誤:InputMismatchException

所以我把下面的代碼:

catch (InputMismatchException e) {
System.out.print(e.getMessage());}

表示返回null。

我該如何解決?

代替使用s.nextInt(),將第一個標記解析為Integer。

請參見下面的示例。

public static void main(String... args) throws FileNotFoundException {
        List<Pauta> pautaT = new LinkedList<Pauta>();
        try {
            Scanner s = new Scanner(new File("test.txt"));
            try{
                List<Pauta> pautaS =pautaT;
                while ( s.hasNextLine()){
                    String line = s.nextLine();
                    String tokens[]= line.split(";");
                    pautaS.add(new Pauta (Integer.parseInt(tokens[0]), tokens[1],tokens[2]));
                }
                pautaT = pautaS;
            }
            finally {
                s.close();
            }
        }
        catch (FileNotFoundException e){
            e.printStackTrace();
        }

    }

這將導致列表被填充。

您可能會使用StringTokenizer,並將同一行的每個標記保存到變量中,然后根據需要使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM