输入文件名称和流行度Java

时间:2013-11-28 01:55:08

标签: java arrays fileinputstream

所以我有一个名字和11个人气排名的文件,看起来像this。 < ---(这是一个链接)我对我的下一部分所做的事情有点困惑。通常我有一个名称应用程序,如下所示:

public class Name{

private String givenName;
private int[] ranks = new int[11];

public Name(String name, int[] popularityRanks){
    givenName = name;

    for (int i = 0; i < 11; i++){
        ranks[i] = popularityRanks[i];
    }
}

public String getName(){
    return givenName;
}

public int getPop(int decade){
    if (decade >= 1 && decade <= 11){
        return ranks[decade];
    }
    else{
        return -1;
    }
}

public String getHistoLine(int decade){
    String histoLine = ranks[decade] + ": ";

    return histoLine;
}

public String getHistogram(){
    String histogram = "";

    for (int i = 0; i < 11; i++){
        histogram += ranks[i] + ": " + this.getHistoLine(i)
                + "\n";
    }

    return histogram;
}
}

它没有为getHistoLine完成,但这与我想要做的事情没有任何关系。通常我想从文件中获取这些名称并创建一个列表数组。

他是如何形容的:

在main中创建数组,将其传递给readNamesFile方法,然后让该方法用Name对象填充它

通过打印各种名称及其受欢迎程度排名来测试这个

例如,如果main命名数组,列表,则从readNamesFile方法返回时执行以下操作:

System.out.println( list[0].getName() + list[0].getPop(1) );

这就是我的主要观点:

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;

public class NameApp{

public static void main(String[] args){     

    Name list[] = new Name()

}

private static void loadFile(){
    Scanner inputStream = null;
    String fileName = "names.txt";

    try {
        inputStream = new Scanner (new File(fileName));
    }
    catch (FileNotFoundException e){
        System.out.println("Error opening file named: " + fileName);
        System.out.println("Exiting...");
    }

    while (inputStream.hasNext()){

    }
}

}

我只是有点困惑我怎么能取名将它发送到Name对象列表[]然后获取流行度等级并将其发送到Name对象列表[]。所以我打电话的时候     列表[0] .getName()

它只会调用其中一行的名称...抱歉,我对java语言有点新意。提前致谢

1 个答案:

答案 0 :(得分:0)

您需要正确创建Name列表。我会使用List,因为你不知道会有多少名字;

public static void main(String[] args){     

    List<Name> list = new ArrayList<Name>();

    loadFile();

    System.out.println(list.get(0).getPop());
}

private static void loadFile(){
    Scanner inputStream = null;
    String fileName = "names.txt";

    try {
        inputStream = new Scanner (new File(fileName));
    }
    catch (FileNotFoundException e){
        System.out.println("Error opening file named: " + fileName);
        System.out.println("Exiting...");
    }

    while (inputStream.hasNext()){
        // givenName = something
        // ranks = something;

        list.add(new Name(givenName, ranks);
    }
}

假设每一行都是这样的(来自你删除的评论)

A 1 234 22 43 543 32 344 32 43

你的while循环可以是这样的

while (inputStream.hasNextLIne()){
     String line = inputStream.nextLine();
     String tokens = line.split("\\s+");

     String givenName = tokens[0];

     int[] numList = new int[tokens.lenth - 1];

     for (int i = 1; i < tokens.length; i++){
         numList[i - 1] = Integer.parseInt(tokens[i].trim());
     }

     list.add(new Name(givenName, numList);
}