在我的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循环之外使用这些变量?
答案 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);