从txt文件Java中读取多种数据类型

时间:2016-12-03 21:48:52

标签: java arrays while-loop java.util.scanner token

我知道有很多关于从txt文件中读取数据的问题,但我给出的txt文件包含:

1980 Aug    945 100 Allen1983 Aug   962 100 Alicia1984 Sep  949 100 Diana

第一个数字是一年,一个月,一个风压,风速以节奏和飓风名称。这个模式需要几百个条目,我必须将每个不同的数字放入自己的数组(年[],月[],压力[]等......)

我尝试了很多不同的方法,但这是我最近尝试过的一个例子:

import java.io.IOException;
import java.io.File;
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.Scanner;
public class Hurricanes2 {
public static void main(String[] args) throws IOException { 
int i = 0;
    int token1 = 0;
    String token2 = "";

    int[] years = new int[1000]; //token 1
    String[] months = new String[1000]; //token 2
    String[] names = new String[1000];
    int[] pressure = new int[1000]; //token 1
    int[] windSpeed = new int[1000]; //token 1
    int[] category = new int[1000]; //token 1

    Scanner s = new Scanner (new FileReader("hurcdata2.txt"));

while (s.hasNext()) {
        if (s.hasNextInt()) {
            token1 = s.nextInt();
            if (token1 >= 1980) {
                years[i] = token1;
            }
            else if (token1 >= 1000) {
                pressure[i] = token1;
            }
            else {
                windSpeed[i] = token1;
            }
        }
        else if (s.hasNext()) {
            token2 = s.next();
            if (token2.equals("Jun") || token2.equals("Jul") || token2.equals("Aug") || token2.equals("Sep") || token2.equals("Oct") || token2.equals("Nov")) {
                months[i] = token2;
            }
            else {
                names[i] = token2;
            }
        }
        token1 = 0;
        token2 = "";
        i++;
        }

当我使用for-each循环打印任何数组时,所有值都为0.除非我只打印第一个元素(例如[0]),否则它将显示正确的值。任何其他索引> 0仍显示0。 我知道它有很多错误但是在这一点上我正在尝试一些奇怪的事情让它发挥作用。我不是在寻找对此代码的更正,而是整体解决问题。

1 个答案:

答案 0 :(得分:0)

您可以尝试在空格处分割单词,然后将其存储在Objects数组中。然后,您可以使用instanceof来比较类型,例如if(obj instanceof Integer) ...