在循环中使用变量

时间:2016-01-21 11:53:03

标签: java csv arraylist

在我的java项目中,我将读取一个csv文件。如果文件包含" nr"值10,我想打印"名称"在屏幕上。

while ((line = reader.readLine()) != null) {
    scanner = new Scanner(line);
    scanner.useDelimiter(";");
    while (scanner.hasNext()) {
        String data = scanner.next();
        if (index == 0)
            nr = Integer.parseInt(data);
            if (nr == 10){
                // ?????
            }
        else if (index == 1)
            name = data;
        else if (index == 2)
            id = data;
        else
            System.out.println("invalid data::" + data);
        index++;
    }
    index = 0;
    forward(nr, name, id);  
}

例如我的csv有" nr" 10,两次:

10;name1;id1
20;name2;id2
10;name3;id3

所以我想在屏幕上打印name1和name3,如何在while循环之外使用这些变量?

4 个答案:

答案 0 :(得分:1)

我不是Java程序员,但如果我正确理解了这个问题,你可以定义一个在While循环范围之外的变量,并从内部分配它。见下文。

N.B。在Java中,变量只能在声明它们的范围内使用。

ArrayList<String> list = new ArrayList<String>();
while (...) {
    list.add("NameToAdd");
}
for(String name: list){
    System.out.print(name);
};

答案 1 :(得分:0)

在java中,变量不能在定义的范围之外使用(例如,与Javascript不同)

因此,您有两个选项可以将它们存储在循环外部定义的变量中,或者在获取它们的那一刻打印它们,而不是使用name1和name3变量。

答案 2 :(得分:0)

您可以根据需要更改输入值,此处我使用的是Arralist数据:

public static void main(String s[]) {

    String name = "", id = "";
    ArrayList<String> nameList = new ArrayList<String>();
    nameList.add("10;name1;id1");
    nameList.add("20;name2;id2");
    nameList.add("10;name3;id3");
    nameList.add("30;name4;id4");
    nameList.add("10;name5;id5");
    nameList.add("10;name6;id6");

    int index = 0;
    int nr;

    for (String line : nameList) {
        Scanner scanner = new Scanner(line);
        scanner.useDelimiter(";");
        index = 0;
        while (scanner.hasNext()) {
            String data = scanner.next();
            //System.out.println(":: " + data + " Index:: " + index);

            if (index == 0) {
                nr = Integer.parseInt(data);
                index++;
                if (nr == 10) {
                    name = scanner.next();
                    id = scanner.next();
                    System.out.println(nr + ";" + name + ";" + id);
                }
            }

        }

    }
}

答案 3 :(得分:0)

就像汤姆之前提到的,你可以做类似的事情:

String str = "";
int nr = 0;
int index = 0;
while ((line = reader.readLine()) != null) {
    scanner = new Scanner(line);
    scanner.useDelimiter(";");
    while (scanner.hasNext()) {
        String data = scanner.next();
        if (index == 0)
            nr = Integer.parseInt(data);
        else if (index == 1)
            name = data;
            if (nr == 10)
                str += data + "\n"  
        else if (index == 2)
            id = data;
        else
            System.out.println("invalid data::" + data);
        index++;
    }
    index = 0;
    forward(nr, name, id);  
}
System.out.println(str);