为了账号安全,请及时绑定邮箱和手机立即绑定

如何解析具有多种数据类型的代码行

如何解析具有多种数据类型的代码行

慕姐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 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信