亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何解析具有多種數據類型的代碼行

如何解析具有多種數據類型的代碼行

慕姐8265434 2023-10-19 21:49:22
目前正在開發一個程序,該程序讀取足球運動員的統計數據并將數據轉換為二進制并將其全部寫入文件。我遇到的問題是解析我正在讀取的文件包含的所有不同數據類型。我正在讀取的文件將采用以下格式 - 姓氏 年數 職位 身高 體重 40ydSpeed 團隊活躍嗎?文件的示例如下: Brady, 14, QB, 1, 210, 4.9, Patriots, true 我想知道如何解析不同的數據類型,int,char,double,String和布爾值。到目前為止,我的程序要求用戶輸入一個文件,它會捕獲無效文件中的任何 FileNotFoundExceptions 并循環,直到輸入有效文件。然后程序讀取該文件并將其全部存儲到一個列表中。public static void main(String[] args) throws IOException {     File file;     Scanner inputFile;     Scanner readFile;     String line;     String fileName;     int x = 1;     ArrayList<String> stats = new ArrayList<String>();    do {        Scanner kb = new Scanner(System.in);        System.out.println("Please enter the name of a " +                "file containing football player data:");        fileName = kb.nextLine();        try {            file = new File(fileName);            inputFile = new Scanner(file);            while(inputFile.hasNext()) {                    stats.add(inputFile.nextLine());            }            x=2;        }        catch (FileNotFoundException e)            {            System.out.print("File not found. ");            }       }    while(x==1);    for (String s : stats) {        System.out.println(s);    }    // TODO use the following methods for writing to binary    // TODO writeUTF, writeInt, writeChar, writeInt, writeInt, writeDbl, writeByte
查看完整描述

3 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

如何解析不同的數據類型:int、char、double、String 和 boolean


為了:


int x = Integer.parseInt(s)

char x = s.charAt(0)

double x = Double.parseDouble(s)

String x = s

boolean x = Boolean.parseBoolean(s)


查看完整回答
反對 回復 2023-10-19
?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

當前的問題是 thaArrayList<String> stats = new ArrayList<String>();強制您讀取的任何值都是String。如果您了解了類,那么您可以創建一個模擬足球運動員的類:讓我們以它FootballPlayer為例。

您將FootballPlayer擁有許多不同類型的字段。你會有一個表示lastNameis a StringyearsExpthat is anint等等。

然后,這里:

 while(inputFile.hasNext()) {
     stats.add(inputFile.nextLine());
 }

您可以保留與您要讀取的字段相對應的索引。lastName可以對應于index0、1yearsExpr等。然后,根據索引值(您可以使用語句),您可以調用返回適當類型switch的不同方法,例如,如果索引為 1 (for )。調用此適當的方法后,您可以將返回值分配給 實例中的相應字段。ScannernextInt()yearsExprFootballPlayer

將來,整個過程可以通過使用庫來解析您正在使用的數據格式來為您處理,例如 CSV 解析器(因為看起來數據是用逗號分隔的)。


查看完整回答
反對 回復 2023-10-19
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

您可以用 或任何其他常用分隔符分隔輸入,,然后嘗試一一解析。


String input = "Tom, 15, 6, 86.4"; // name, age, grade, mark

String[] inputs = input.split(", "); // [ Tom, 15, 6, 86.4 ]


for (String in : inputs) {

    if (isInteger(in)) {

        // something

    } else if (isString(in)) {

        // other thing

    } // etc

}


查看完整回答
反對 回復 2023-10-19
  • 3 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號