Java can';t根据CSV中的值打印
我想根据csv中的值在命令行中打印行,这是我的代码:Java can';t根据CSV中的值打印,java,csv,Java,Csv,我想根据csv中的值在命令行中打印行,这是我的代码: public static void view() throws IOException, FileNotFoundException { String path = "C:\\Users\\hayth\\eclipse-workspace\\pouch\\src\\pouch\\temp.csv"; String line =""; B
public static void view() throws IOException, FileNotFoundException {
String path = "C:\\Users\\hayth\\eclipse-workspace\\pouch\\src\\pouch\\temp.csv";
String line ="";
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(new FileReader(path));
removeBlank(path);
while((line = bufferedReader.readLine()) != null) {
String[] values = line.split(",");
if(values[0].trim() == "pencil") {
System.out.println("Item: " + values[0] + " \tBrand: " + values[1] + " \tLength: " + values[2]);
} else if(values[0].trim() == "eraser"){
System.out.println("Item: " + values[0] + " \tBrand: " + values[1] + " \tShape: " + values[2]);
} else {
System.out.println("Item: " + values[0] + " \tBrand: " + values[1] + " \tState: " + values[2]);
}
}
} finally {
if( bufferedReader != null) {
bufferedReader.close();
}
}
}
正如你们所看到的,不同的物体有不同的属性,所以我想要打印的线对于每个盒子应该是不同的,比如铅笔有品牌和长度,橡皮擦有品牌和形状等等
示例csv:
pencil,XX,10
eraser,YY,rectangle
sharpener,YY,new
pencil,YY,12
但我得到的结果是:
Item: pencil Brand: XX State: 10
Item: eraser Brand: YY State: rectangle
Item: sharpener Brand: YY State: new
Item: pencil Brand: YY State: 12
我可以看到,我无法比较数组值中的值,它正在执行else语句,但我似乎无法理解这个问题。我对Java相当陌生,如有任何帮助,将不胜感激。谢谢:)将您的
值[0]更改为值[0].trim()==“whatever”
行。trim().equals(“whatever”)
或者更好的是,equalsIgnoreCase
<代码>=测试字符串是否引用相同的对象,而不是它们的值是否相等
另外,请参见请使用
字符串#等于
而不是=
谢谢,我已经完全忘记了引用和值等于。