我正在尝试使用 Java 和A pache commons CSV 库来访问CSV文件的数据。 我陷入了困境。 问题是: “如果”名称“标题等于”rahul“,则显示特定行的数据。当我运行代码时,没有任何内容打印出来。”
exportdata.csv文件中的数据是:
我的代码是:
public class csvexample {
public void readfile()
{
FileResource fr=new FileResource();
CSVParser parser=fr.getCSVParser();
for(CSVRecord record : parser)
{
String str=record.get("Name");
System.out.println(str);
if(str=="rahul")
{
System.out.print(record.get("Name") + " ");
System.out.print(record.get("Phone") + " ");
System.out.println(record.get("Food"));
}
}
}
我认为错误在 if(str ==“rahul”)行中,我检查过str =“rahul时程序没有处理str和”rahul“ “在 for loop 的第一次迭代中。
答案 0 :(得分:1)
因为它们是2个不同的String对象,即使它们具有相同的字符。试试if ("rahul".equals(str))
答案 1 :(得分:-1)
不确定,但你可以试试这个:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public void readFile() {
String csvFile = "exportdata.csv";
String line = "";
String cvsSplitBy = ",";
try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
while ((line = br.readLine()) != null) {
// use comma as separator
String[] str = line.split(cvsSplitBy);
String name = str[0];
if(name.equals("rahul")){
System.out.print("Name: " + str[0]);
System.out.print(" Food: " + str[1]);
System.out.println(" Phone: " + str[2]);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
希望这会对你有所帮助。